原型模式
如果对象的创建成本很大,而同一个类的不同对象之间差别不大(大部分属性字段相同),这种情况下我们可以根据已有对象(原型)进行复制(或拷贝)的方式来创建新的对象,以达到节省创建时间的目的,基于原型来创建对象的设计方式叫做原型设计模式(Prototype Design Pattern)
原型模式的应用场景
创建对象的成本比较大:对象的属性需要消耗资源去计算才能得到(比如排序、哈希、IO读取)
原型模式的使用方式
- 浅拷贝:只会拷贝对象中的基本数据类型
- 深拷贝:方法1.递归拷贝依赖的对象 方法2.通过序列化
使用案例
- 大的集合对象设计到并发读写时,可以考虑使用原型模式并结合CopyOnWrite
注意事项
- 多数情况下推荐使用深拷贝
- 在深拷贝代价比较大的情况下推荐使用浅拷贝,没有必要为了一点点性能的提升而使用浅拷贝,造成不必要的数据共享问题(很难排查)Copy On Write
常见的原型模式应用举例
BeanUtils