定义
将一个复杂对象的构建与它的表示分离 ,使得同样的构建过程可以创建不同的表示 。
角色
抽象建造者(维护基本抽象建造方法)、具体建造者(实现具体建造方法)、产品 (维护基本属性)、指挥者 (调用每一个建造方法完成建造)
场景
1、产品拥有复杂的内部结构,通常包含多个成员变量。
2、生成产品对象的属性相互依赖 ,需要指定其生成顺序 。
3、对象的创建过程独立于创建该对象的类 。在建造者模式中通过引入指挥者类将创建过程封装在指挥者中 ,而不在建造者类和客户类中 。
4、隔离复杂对象的创建和使用 ,并使得相同的创建过程可以创建不同的产品 。
场景举例
多人在线网络游戏 ,不同角色的创建可以使用建造者模式 。
优点
1、通过相同的创建过程可以创建不同的产品对象 。
2、方便地替换具体建造者或增加新的具体建造者 。
3、控制产品的创建过程 ,职责分离 ,过程清晰 。
缺点
1、要求产品一般具有较多的共同点 。
2、产品的内部变化复杂 。