定义
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。
结构
- Builder(抽象建造者)
- 创建复杂对象各个部件
- getResult 返回复杂对象
- ConcreteBuilder(具体建造者)
实现各个部件的具体构造与装配方法
- product(产品)
复杂对象
- Director(指挥者)
- 安排建造次序
- 与抽象建造者存在关联关系,可以在其construct()调用建造者对象部件构造与装配方法。
实现
Builder
package designpatterns.builder.simple;
public abstract class Builder {
protected Product product = new Product();
public abstract void builderPartA();
public abstract void builderPartB();
public Product getResult(){
return this.product;
}
}
ConcreteBuilder
package designpatterns.builder.simple;
public class ConcreteBuilder extends Builder {
@Override
public void builderPartA() {
product.setPartA("a");
}
@Override
public void builderPartB() {
product.setPartB("b");
}
}
Product
package designpatterns.builder.simple;
public class Product {
private String partA;
private String partB;
public String getPartA() {
return partA;
}
public void setPartA(String partA) {
this.partA = partA;
}
public String getPartB() {
return partB;
}
public void setPartB(String partB) {
this.partB = partB;
}
}
Director
package designpatterns.builder.simple;
public class Director {
private Builder builder;
public Director(Builder builder){
this.builder = builder;
}
public void setBuilder(Builder builder){
this.builder = builder;
}
public Product construct(){
builder.builderPartA();
builder.builderPartB();
return builder.getResult();
}
}