原型模式
模式描述
原型模式是从一个原型实例中创建另外一个相同对象,而不用知道创建细节。。
优点
- 运行时增加和删除对象;
- 通过极少改变,创建新对象;
缺点
- 要使用深拷贝代替浅拷贝。循环依赖的问题可能使 clone 难以实现;
- Prototype 的每个子类都要实现 clone;
应用场景
- 对象创建的数据需要从 RPC、网络、数据库、文件系统等非常慢速的 IO 中读取;
- 对象创建成本大、不同对象大部分字段都相同。
DATE | CHANGELOG |
---|---|
2023年4月28日 | 初始化 |
2023年4月30日 | 添加 Go 语言实现 |
UML 类图
classDiagram
class Prototype {
<<interface>>
clone() Object
}
class ConcretePrototype {
clone() ConcretePrototype
}
Prototype <|.. ConcretePrototype
Prototype <-- Client
参与者
Prototype 接口
- 声明一个克隆自身的接口。
ConcretePrototype 类
- Prototype 接口的实现。
Client 类
- 客户端用来克隆自身
相关模式
- 与抽象工厂(Abstract Factory)亦敌亦友;
补充
- 使用深拷贝,除非有足够的理由才能选择浅拷贝;