0.意图
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
1.适用性
当一个系统应该独立于它的产品创建、构成或表示时,要使用Prototype模式;以及
- 当要实例化的类时在运行时刻指定时,例如,通过动态装载;
- 或者,为了避免创建一个与产品类层次平行的工厂类层次时;
- 或者,当一个类的实例只能有几个不同状态组中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
2. 结构

3. 参与者
- Prototype – 声明一个克隆自己的接口。
- ConcretePrototype – 实现一个克隆自己的操作。
- Client – 让一个原型克隆自身从而创建一个新的对象。
4. 协作
客户请求一个原型克隆自身。
5. 效果
- 对客户隐藏了具体的产品类,减少了客户知道的名字的数目。
- 使客户无需改变即可使用与特定应用相关的类。
- 运行时刻增加和删除产品。
- 改变值以指定新对象。
- 改变结构以指定新对象。
- 减少子类的构造。
- 用类动态配置应用。