以下是**生成器模式(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
)。│
:垂直分隔线。
核心角色
- Product:最终构造的复杂对象(如
Computer
)。 - Builder:定义构造步骤的接口(如
buildCPU()
、buildRAM()
)。 - ConcreteBuilder:实现构造逻辑的具体类(如
GamingComputerBuilder
)。 - Director:控制构造流程的类(如
Engineer
)。
关系解读
- Director 调用 Builder 的方法,按步骤构造 Product。
- ConcreteBuilder 实现 Builder 接口,并负责最终 Product 的生成。
- 不同 ConcreteBuilder 可构造不同形式的 Product(例如:高配版 vs 低配版)。