亦称: 生成器模式、Builder
通过链式调用,使你能够分步骤,自由选择需要的属性创建复杂对象。
实现
- 清晰地定义通用步骤, 确保它们可以制造所有形式的产品。 否则你将无法进一步实施该模式。
- Builder 2. 在抽象生成器中声明这些步骤。
- Car 3. 定义产品
- CarBuilder 4. 为每个形式的产品创建具体生成器类
- Director 5. 考虑创建指挥者(非必要)。 负责使用同一生成器对象来封装多种构造产品的方式,并隔离客户端与产品的生成过程。
- Client 6. 客户端调用
实现2:简化版
- Car 定义产品,同时用静态内部类直接定义该产品的生成器类
- Client 客户端自行创建产品
实现3:Lombok @Builder自动生成
优缺点
<aside>
✅ 你可以分步创建对象, 暂缓创建步骤或递归运行创建步骤。
</aside>
<aside>
✅ 生成不同形式的产品时, 你可以复用相同的制造代码。
</aside>
<aside>
✅ 单一职责原则。 你可以将复杂构造代码从产品的业务逻辑中分离出来。
</aside>
<aside>
❌ 由于该模式需要新增多个类, 因此代码整体复杂程度会有所增加。
</aside>
关系