原型模式(Prototype Pattern)是一种创建型设计模式,在软件工程中用来创建对象的副本,从而避免新建对象时的性能开销。此模式利用已存在的对象实例作为原型,通过克隆(Clone)机制来创建新的对象,新对象与原型对象具有相同的属性和状态,但彼此独立,修改一个对象不会影响到另一个。
原理与特点
核心思想:通过复制已经存在的对象来创建新的对象,而不是通过new操作符来创建新对象。这样可以减少对象创建的性能消耗,特别是在创建对象的过程较为复杂或资源消耗较大时。
角色划分:
Prototype(原型):声明一个克隆自身的方法,这是一个接口或抽象类,所有具体原型类都需要实现这个克隆方法。
ConcretePrototype(具体原型):实现Prototype接口,定义克隆自身的具体逻辑,真正完成克隆操作。
适用场景:
需要创建的对象类型繁多,但是创建逻辑相似或部分相同。
创建新对象成本较高,如初始化过程复杂、资源消耗大。
需要避免因使用new操作而产生大量重复代码。
优缺点:
优点:提高对象创建的效率和性能,简化对象的创建过程;易于维护和扩展。
缺点:每个类都需要实现克隆方法,增加了类的复杂度;深拷贝与浅拷贝的问题需要特别注意,以避免共享引用造成意外修改。
实现方式
浅拷贝:创建一个新对象,复制原对象的基本数据类型属性,对于引用类型属性,则复制其引用,因此原对象和克隆对象会共享这些引用类型的值。
深拷贝:除了复制基本数据类型属性外,还会递归地复制引用类型属性,确保原对象和克隆对象之间完全独立,无共享引用。