1 简介
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,一步一步构造一个由多个部分组成的复杂对象。
2 代码
(1)产品(Product)
public class Product {
private String partA;
private String partB;
public void setPartA(String s) {
partA=s;
}
public void setPartB(String s) {
partB=s;
}
public void show() {
System.out.println("partA:"+partA+"\tPartB:"+partB);
}
}
(2)构建者(Builder)
public abstract class Builder {
protected Product product=new Product();
public abstract void buildPartA();
public abstract void buildPartB();
public Product getResult() {
return product;
}
}
public class Builder1 extends Builder{
@Override
public void buildPartA() {
product.setPartA("A_1");
}
@Override
public void buildPartB() {
product.setPartB("B_1");
}
}
public class Builder2 extends Builder{
@Override
public void buildPartA() {
product.setPartA("A_2");
}
@Override
public void buildPartB() {
product.setPartB("B_2");
}
}
(3)指挥者(Director)
public class Director {
private Builder builder;
public void setBuilder(Builder builder) {
this.builder=builder;
}
public Product construct() {
builder.buildPartA();
builder.buildPartB();
return builder.getResult();
}
}
(4)客户端(Client)
public class Client {
public static void main(String[] args) {
Builder builder1=new Builder1();
Builder builder2=new Builder2();
Director director=new Director();
director.setBuilder(builder1);
Product product1=director.construct();
product1.show();
director.setBuilder(builder2);
Product product2=director.construct();
product2.show();
}
}