文档地址:《设计模式之禅》
切入故事:变化是永恒的
定义: Separate the construction of a complex object from its representation so that the sameconstruction process can create different representations.(将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示。)
通用类图:
● Product产品类
通常是实现了模板方法模式, 也就是有模板方法和基本方法。
● Builder抽象建造者
规范产品的组建, 一般是由子类实现。
● ConcreteBuilder具体建造者
实现抽象类定义的所有方法, 并且返回一个组建好的对象。
● Director导演类
负责安排已有模块的顺序, 然后告诉Builder开始建造
优点:
1: 封装性
2: 建造者独立, 容易扩展
3: 便于控制细节风险
使用场景:
1: 相同的方法, 不同的执行顺序, 产生不同的事件结果
2: 多个部件或零件, 都可以装配到一个对象中, 但是产生的运行结果又不相同
3: 产品类非常复杂, 或者产品类中的调用顺序不同产生了不同的效能
4: 在对象创建过程中会使用到系统中的一些其他对象, 这些对象在产品对象的创建过程中不易得到
总结:
建造者模式和工厂模式的区别:建造者模式关注的是产品组成部分的创建过程(细节), 工厂方法则重点关注是创建产品整体(整体)