类图
代码
Prototye类
1 | class People implements Cloneable, Serializable{ |
ConcretePrototype类
1 | class Men extends People{ |
引用类(仅为了说明深拷贝和浅拷贝的区别)
1 | class Weapon implements Serializable{ |
测试类
1 | public class Client { |
运行结果
1 | 造人开始 |
总结
概述
Prototye类承载了拷贝方法,使其实现类不用重复实现,原型模式又分
浅拷贝
引用不会进行复制
深拷贝
会复制所有引用,要保障被复制对象和对象包含的所有引用对象都实现Serialize接口
优点
当目标对象的实例化较为费时时就可以采用原型模式进行对象创建,在文中Men对象创建的过程中Sleep了2秒做了示范
缺点
如果是使用深拷贝,则其所有引用对象都必须实现Serialize接口,这个对于旧系统来讲改造成本有点大
深拷贝要注意可能会出现的循环引用问题