本文已参加【新人创作礼】活动,一起开启掘金创作之路。
概念
原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。
角色
Prototype(抽象原型类):生命克隆方法的接口,也可以是具体实现类
ConcretePrototype(具体原型类):实现了抽象类中克隆方法的具体类
Client(客户类):调用原型类克隆新对象
类图
| 原型模式类图[^1] |
实例代码
通用方式
java中clone()方法
实现克隆的Java类必须实现一个标识接口Cloneable
注意:Java中的clone方法默认返回的是浅克隆,如果需要深克隆需要将原对象的所有引用对象也复制一份给克隆对象。
优缺点
优点:
(1)对象复杂时,简化创建过程
缺点:
(1)需要为原类添加一个克隆方法,克隆方法存在与类内部,如果改造会违反开闭原则 (2)深克隆比较麻烦
参考资料
[1] 刘伟. 设计模式的艺术[M]. 清华大学出版社, 2020.