原型模式的门道儿,没有那么浅,至少我觉得特别多。
1,jdk的浅克隆clone及深克隆实现
2,利用序列化与反序列化进行深克隆
3,clone会破坏单例
4,transient关键字-指定属性不序列化(保护敏感信息)
5,克隆的巧妙运用-当你需要使用remove方法移除掉集合中的对象,而非要修改集合中的对象的时候,可以选择使用。
6,使用json复制对象(Spring BeanUtils香香哒)
感谢这个资源时代,蛮多优秀认真的文章,这里更多的是搬运和思考。
先来看看JDK的Object的clone接口源码说明(原创)

克隆(复制)在Java中是一种常见的操作,目的是快速获取一个对象副本。克隆分为深克隆和浅克隆。
浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。
深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。
总之深浅克隆都会在堆中新分配一块区域,区别在于对象属性引用的对象是否需要进行克隆(递归性的)。
推荐阅读:java中的关键字transient,这篇文章你再也不发愁了
1,transient关键字的作用?
将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。
2,transient底层实现原理是什么?
serialization提供存储对象状态的机制(对象的状态存储到硬盘上),transient修饰的字段,他的生命周期仅仅在内存中,不会被写到磁盘中。
3、被transient关键字修饰过得变量真的不能被序列化嘛?
不是。取决于对象实现哪个序列化接口(Serializable或Exteranlizable),后者可以自定义序列化。
4、静态变量能被序列化吗?没被transient关键字修饰之后呢?
静态变量是不会被序列化的,即使没有transient关键字修饰。
5、妙用
银行卡、密码等敏感数据的