3.1 定义
原型模式的定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。
3.2 优点与缺点
优点:
- Java 自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。
- 可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份,并将其状态保存起来,简化了创建对象的过程,以便在需要的时候(例如恢复到历史某一状态),可辅助实现撤销操作。
缺点:
- 需要为每个类都配置一个 clone 方法。
- clone 方法位于类的内部,当对已有类进行改造时,需要修改代码,违背了开闭原则。
- 当实现深克隆时,需要编写较为复杂的代码,而且当对象之间存在多重嵌套引用时,为了实现深克隆,每一层对象对应的类都必须支持深克隆,实现起来比较麻烦。因此,深克隆、浅克隆需要运用得当。
3.3 适用场景
- 对象之间相同或相似,即只是个别的几个属性不同的时候。
- 创建对象成本较大,例如初始化时间长、占用CPU太多、或者占用网络资源太多等。
- 创建一个对象需要繁琐的数据准备或访问权限等,需要提高高性能或者提高安全性。
- 系统中大量使用该类对象,且各个调用者都需要给它的属性重新赋值。
