设计模式 建造者模式
本文将介绍设计模式中的建造者模式。
一、什么是建造者模式?
二、实现
1. 结构
2. 角色
- Builder 抽象建造者:
- 所有具体建造者的抽象类
- 定义了一系列方法,其中主要可分为两类:
buildPartX()
:用于创建复杂对象的各个部件getResult()
:用于返回复杂对象
- ConcreteBuilder 具体建造者:
- 抽象建造者的子类
- Product 产品:
- 创建目标
- 包含多个部件
- Director 指挥者:
- 与客户端直接交互
- 负责安排复杂对象的建造过程
3. 简单示例
Builder:
1 |
|
ConcreteBuilder:
1 |
|
Product:
1 |
|
Director:
1 |
|
使用:
1 |
|
三、优缺点
1. 优点
- 客户端无需知道复杂产品的具体创建过程,产品的获取与产品的创建过程解耦
- 可以更加精细地控制复杂产品地创建过程
2. 缺点
- 如果产品之间差异较大,则不适合使用建造者模式
- 如果产品的内部变化复杂,则建造者可能较为复杂,从而增大系统的理解难度和维护成本
四、变种
1. 省略 Director
为了简化系统结构,可以将 Director 与 Builder 合并,在 Builder 中提供用于构建复杂产品对象的方法。
1 |
|
2. 引入钩子方法
为了更精确地控制复杂产品对象的创建,可以引入 isXXX()
方法,返回附件的构建与否信息,以便指挥者根据实际情况创建产品。
参考
- 《Java 设计模式》