跳到主要内容

建造者模式 Builder

定义

将复杂对象的构建和表示分离开来 允许用相同的步骤创建不同的 representations

创建者模式是用于创造复杂对象的 step by step approach

用户可以每一步基于具体的类型和内容构建复杂的对象

但是仍然不需要知道更具体的内部细节

模式结构

  • Builder(抽象)
  • 扩展 Builder
  • Director
  • Product

优点

  • 用户不需要知道产品内部组合的细节,将产品和产品创建过程解耦,因此相同的创建过程可以用于不同的产品对象
  • 增加或者替换新的扩展 builder 很方便,而且符合开闭原则
  • 更好地控制产品创建过程

缺点

  • 被 builder 创建的产品通常具有共同点,且组件类似;如果不同产品间的区别过大;模式将不再合适,使用范围被限制
  • 如果产品内部的变化复杂,可能需要定义多个扩展 Builder 类来实现改变,增加系统大小,提升复杂度和运行开销

应用

  • 需要被生成的产品对象拥有复杂的内部结构
  • 产品对象的属性之间互相依赖,需要具体化创建步骤
  • 存在 director class,由 director 负责创建,而不是 client
  • 隔离复杂对象的创建和使用,用相同创建步骤创建不同产品