生成器模式(Builder Pattern)

以下是**生成器模式(Builder Pattern)**的文本版 UML 类图,使用符号表示:

┌───────────────────┐          ┌───────────────────┐
│      Director      │          │      Builder       │
├───────────────────┤          ├───────────────────┤
│ +construct(Builder)│<>───────>│ +buildPartA()      │
└───────────────────┘          │ +buildPartB()      │
                               │ +getResult():Product│
                               └───────────────────┘
                                       △
                                       │ 实现
               ┌───────────────────────────────────┐
               │                                   │
       ┌───────────────────┐             ┌───────────────────┐
       │  ConcreteBuilder1 │             │  ConcreteBuilder2 │
       ├───────────────────┤             ├───────────────────┤
       │ +buildPartA()      │             │ +buildPartA()      │
       │ +buildPartB()      │             │ +buildPartB()      │
       │ +getResult():Product│            │ +getResult():Product│
       └───────────────────┘             └───────────────────┘
                   │                                   │
                   ▼                                   ▼
       ┌───────────────────┐             ┌───────────────────┐
       │     Product       │             │     Product       │
       ├───────────────────┤             ├───────────────────┤
       │ -attribute1       │             │ -attribute1       │
       │ -attribute2       │             │ -attribute2       │
       └───────────────────┘             └───────────────────┘

符号说明

  • ┌─┐:类框。
  • <>───>:依赖关系(Director 依赖 Builder 接口)。
  • :实现关系(ConcreteBuilder 实现 Builder 接口)。
  • +:公有方法(如 construct())。
  • -:私有属性(如 attribute1)。
  • :垂直分隔线。

核心角色

  1. Product:最终构造的复杂对象(如 Computer)。
  2. Builder:定义构造步骤的接口(如 buildCPU()buildRAM())。
  3. ConcreteBuilder:实现构造逻辑的具体类(如 GamingComputerBuilder)。
  4. Director:控制构造流程的类(如 Engineer)。

关系解读

  • Director 调用 Builder 的方法,按步骤构造 Product。
  • ConcreteBuilder 实现 Builder 接口,并负责最终 Product 的生成。
  • 不同 ConcreteBuilder 可构造不同形式的 Product(例如:高配版 vs 低配版)。

你可能感兴趣的:(#,设计模式,建造者模式,java,前端)