模式定义
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。
模式使用场景
- 相同的方法,不同的执行顺序,产生不同的时间结果时。
- 多个部件或零件,都可以装配到一个对象中,但是产生的结果又不相同时。
- 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能时。
UML图
角色描述
* Product产品类:产品的抽象类
* Builder:抽象类,规范产品的组件,一般由子类实现具体的组装过程。
* ConcreteBuilder:具体的构造器
* Director:统一组装过程
实现
电脑组装过程比较复杂,步骤很多,但是顺序却不确定。适用于Builder模式
Computer抽象类:
|
|
AppleComputer实现类:
|
|
Builder抽象类
|
|
AppleBuilder实现类
|
|
|
|
Test
|
|
优点和缺点
优点:
- 良好的封装性,使用Builder模式可以使客户端不必知道产品内部组成的细节。
- 建造者独立,容易扩展
- 在对象创建过程中会使用到系统中的其他对象,这些对象在产品的创建过程中不易得到。
缺点:
- 会产生多余的Builder对象和Director对象,消耗内存
- 对象的构建过程暴露。