目录
定义
用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新对象
核心思想
工厂模式回答的问题是"谁来造",原型模式换了一个视角:"照着现成的样子造"
- 工厂方法:每个具体产品配一个创建者子类,产品种类=类的数量;
- 原型模式:一个配置好的对象本身就是模板,新产品=clone母本再微调。种类可以运行期动态删增,不需要新配置,新增任何类
C++中落地的手段是通过一个虚成员函数(如clone)来构造对象,调用方只握有基类指针,却能得到和动态类型完全一致的拷贝
实现
角色
| 角色 | 本例对应 | 职责 |
|---|---|---|
| 抽象原型 Prototype | Shape |
声明 clone() 接口 |
| 具体原型 ConcretePrototype | Circle、Rectangle |
实现 clone(),通过拷贝构造复制自身 |
| 原型管理器 Registry(可选) | ShapeRegistry |
按名字持有母本,对外只发放克隆 |
| 客户 Client | Canvas |
持有克隆出来的对象 |