定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.
角色
1. 产品类
通常实现了模板方法模式,也就是有模板方法和基本方法
2. 抽象建造者
规范产品的组建由子类实现
3. 具体建造者
实现抽象类定义的所有方法,并且返回一个组建好的对象
4. 导演类
负责安排已有的模块的所有方法,然后告诉Builder开始建造
优点
1. 封装性
2. 建造者独立,容易扩展
3. 便于控制细节风险
通用代码
产品类
public class Product {
public void doSomething() {
}
}
抽象建造者
public abstract class AbstractBuilder {
public abstract void setPart();
public abstract Product buildProduct();
}
具体建造者
public class ConcreteProduct extends AbstractBuilder {
private Product product = new Product();
@Override
public void setPart() {
}
@Override
public Product buildProduct() {
return product;
}
}
导演类
public class Dirctor {
private AbstractBuilder builder = new ConcreteProduct();
public Product getProduct(){
builder.setPart();
return builder.buildProduct();
}
}