1.定义

通过复制现有实例来创建新的实例,无需知道相应类的信息。关键字:Clone。

2.深拷贝和浅拷贝

浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。

深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。clone明显是深复制,clone出来的对象是是不能去影响原型对象的。

3. 浅拷贝重点是super.clone()这句话,super.clone()调用的是Object的clone()方法。

设计模式学习-原型模式(Prototype)_Prototype

 

4.深拷贝

实现方式1:重写clone方法

设计模式学习-原型模式(Prototype)_设计模式_02

 

 

实现方式2:通过对象序列化来实现(推荐)

设计模式学习-原型模式(Prototype)_原型模式_03

 

 

5. 总结

原型模式的本质就是clone,可以解决构建复杂对象的资源消耗问题,能在某些场景中提升构建对象的效率;还有一个重要的用途就是保护性拷贝,可以通过返回一个拷贝对象的形式,实现只读的限制。