构造器模式

意图

将一个复杂对象的构造过程与其表示分离开来,使得相同的创建过程可以创造不同的显示形式。

结构图

构造器模式

参与者

  • Builder
    • 指定了创建一个Product对象各个部分的抽象接口。
  • ConcreteBuilder
    • 通过实现Builder接口来实现和组装Product的各个部分。
    • 定义和跟踪它创建的表现形式
    • 提供获取Product的接口
  • Director
    • 使用Builder接口创建一个对象。
  • Proudct
    • 表示正在构造的复杂对象。 ConcreteBuilder构建Product的内部表示形式并定义组装过程。
    • 包含定义所属部分的类,包含将各部分组装成最终结果的接口。

序列图

aClient->aConcreteBuilder: new ConcreteBuilder
aClient->aDirector: new Director(aConcreteBuilder)
aClient->aDirector: Construct()
aDirector->aConcreteBuilder: BuildPartA()
aDirector->aConcreteBuilder: BuildPartB()
aDirector->aConcreteBuilder: BuildPartC()
aClient->aConcreteBuilder: GetResult()

模式评估

  • 被构造的对象的内部表示可以变化。
  • 构造与表示的代码分离。
  • 给予对象构造更精确的控制。

实现上的一些建议

  • 组装和构建接口
  • 构造对象没有定义为抽象对象。
  • Builder的构造对象的方法中,默认是空实现。