亦称: 克隆、Clone、Prototype

Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype. 用原型实例指定要创建对象的种类,并通过拷贝这些原型的属性来创建新的对象。

使你能够复制已有对象, 而又无需使代码依赖它们所属的类。

克隆模式的核心就是一个clone方法,clone方法的功能就是拷贝父本的所有属性。主要包括两个过程: (1)分配一块新的内存空间给新的对象。 (2)拷贝父本对象的所有属性。

问题

解决方案

将克隆过程委派给被克隆的实际对象。 模式为所有支持克隆的对象声明了一个通用接口,该接口让你能够克隆对象, 同时又无需将代码和对象所属类耦合。

原型模式结构

Untitled

实现

优缺点

<aside> ✅ 你可以克隆对象, 而无需与它们所属的具体类相耦合。

</aside>

<aside> ✅ 你可以克隆预生成原型, 避免反复运行初始化代码。

</aside>

<aside> ✅ 你可以更方便地生成复杂对象。

</aside>

<aside> ✅ 你可以用继承以外的方式来处理复杂对象的不同配置。

</aside>

<aside> ❌ 克隆包含循环引用的复杂对象可能会非常麻烦。(参考 Java如何实现深拷贝 ,推荐序列化方式克隆复杂对象)

</aside>