public class Product {
private String partA;
private String partB;
}
public abstract class Builder {
protected Product product = null;
public abstract void buildPartA();
public abstract void buildPartB();
public Builder() {
product = new Product();
}
public Product getResult() {
return product;
}
}
public class MyBuilder extends Builder{
@Override
public void buildPartA() {
System.out.println("MyBuilder buildPartA");
}
@Override
public void buildPartB() {
System.out.println("MyBuilder buildPartB");
}
}
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public Product construct() {
builder.buildPartA();
builder.buildPartB();
return builder.getResult();
}
}
public class Test {
public static void main(String[] args) {
try {
Test test = new Test();
} catch (Exception e) {
e.printStackTrace();
}
}
public Test() {
Builder builder = new MyBuilder();
Director director = new Director(builder);
Product product = director.construct();
}
}
输出:
MyBuilder buildPartA
MyBuilder buildPartB