原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型类创建新的对象。
原型模式也是用于创建对象的设计模式,它与工厂模式不太一样,一般原型模式是通过实现Cloneable
接口,然后端上实现Object的clone()
,也可以不通过Cloneable
,自己通过原有对象去创建新的对象。
使用Cloneable
的方式,即通过调用clone()
方法(最终调用Object
的clone
方法),会有两种情况
- 浅拷贝(浅克隆),如果原型对象的成员变量是值类型(八大基本类型),就会直接复制,如果是引用类型,则只复制对应的内存地址,克隆对象与原型对象使用同一个成员变量
- 深拷贝(深克隆),一般都实现方式有两种,一种是需要原型的成员变量支持用
clone()
方法调用,另外一种是通过序列化的方式,通过这种方式避免多层克隆的问题
参考文章: