1、产品类:
public class Product {
private String bottom;
private String center;
private String top;
public Product() {
}
public void setBottom(String bottom) {
this.bottom = bottom;
}
public void setCenter(String center) {
this.center = center;
}
public void setTop(String top) {
this.top = top;
}
public void show() {
System.out.println("这是一间漂亮的房子!"+" 地基:"+bottom+" 主体:"+center+" 屋顶:"+top);
}
}
2.建造者类
public class Builder {
private static final int READY=0;
private static final int BOTTOM_IS_OK=1;
private static final int CENTER_IS_OK=2;
private static final int TOP_IS_OK=3;
private int state=READY;
private Product product = new Product();
public void buildBottom(){
if(state==READY){
System.out.println("建造地基!");
product.setBottom("钢筋混凝土");
state=BOTTOM_IS_OK;
}
}
public void buildCenter(){
if(state==BOTTOM_IS_OK){
System.out.println("建造主体!");
product.setCenter("钢结构组件");
state=CENTER_IS_OK;
}
}
public void buildTop(){
if(state==CENTER_IS_OK){
System.out.println("建造屋顶!");
product.setTop("木结构组件");
state=TOP_IS_OK;
}
}
public Product getProduct() {
if(state!=TOP_IS_OK){
product=null;
}
return product;
}
3.导演类
public class Director {
public Product build() {
Builder builder=new Builder();
builder.buildBottom();
builder.buildCenter();
builder.buildTop();
Product product = builder.getProduct();
return product;
}
}
4.消费者
public class Customer {
public static void main(String[] args) {
Director director=new Director();
Product product=director.build();
if(product==null){
System.out.println("房子没有建好!");
}else{
product.show();
}
}
}