设计模式之原型模式详解
1. 设计模式回顾
在应用开发过程中,我们会用到各种设计模式。在之前的开发里,涉及到了如下几种设计模式:
- 中介者模式(Mediator)
- 组合模式(Composite)
- 访问者模式(Visitor)
- 代理模式(Proxy)
- 备忘录模式(Memento)
- 命令模式(Command)
- 观察者模式(Observer)
这些设计模式有的单独使用,有的组合成复合模式使用。很多时候,我们在项目中使用它们时甚至都没意识到。
2. 原型模式的概念
原型模式就如同过去人们使用木印(后来是橡皮图章)来印刷常用图形和文字一样。在面向对象应用中,有些对象创建成本高或过程复杂。如果能像用图章复制一样,对已有对象稍作修改来创建新对象,会方便很多。例如克隆复合结构(如树结构),从头构建一个新的树结构很困难,而复用现有结构并稍作修改就容易多了。
原型模式就是用于“克隆”操作的模式。克隆就像是用同一个模具制造一系列产品,模具所基于的物品就是原型,原型决定了最终产品的样子。虽然产品的某些属性(如颜色、尺寸)可能稍有不同,但它们本质上是同一类。
3. 何时使用原型模式
当遇到以下情况时,可以考虑使用原型模式:
- 需要创建独立于自身和创建方式的对象。
- 类的实例化在运行时确定。
- 不想为产品层次结构创建对应的工厂层次结构。
- 不同类的实例之间差异只是几种状态的组合,克隆相应数量的原型比手动实例化更方便。
- 类不容易创建,如复合对象,每个组件都可能有其他组