1. 定义
将一个复杂对象的表示和构建分离,使同样的构建过程可以创建不同的表示
2. 结构
主要角色如下:
产品角色:包含的部件较多,由具体建造者负责部件的创建
抽象建造者:抽象出各个部件建造的接口,通常还包含一个返回产品的方法
具体建造者:实现抽象建造接口,完成具体部件的创建
指挥者:用创建者对象中的构造,完成复杂对象的创建,这里不涉及具体产品的信息
3. 优点
1)封装性好,表示和构建分离
2)扩展性好,各个建造者之间相互独立,方便触耦
3)客户端不需要知道复杂对象的内部细节,可以逐步细化
4. 缺点
1)对象的组成部分相同,限制了使用范围
2)如果对象内部变化较大,则建造者,也需要跟着一起变动,成本较大