package com.life.design.builder;
public abstract class Builder {
public abstract void buildPartA();
public abstract void buildPartB();
public abstract void buildPartC();
public abstract Product getProduct();
}
package com.life.design.builder;
public class ConcreteBuilder extends Builder {
private Product product;
public ConcreteBuilder() {
product = new Product();
}
@Override
public void buildPartA() {
product.setPartA("地基");
}
@Override
public void buildPartB() {
product.setPartB("扎钢筋");
}
@Override
public void buildPartC() {
product.setPartC("浇筑");
}
@Override
public Product getProduct() {
return product;
}
}
package com.life.design.builder;
public class Product {
private String partA = "地基";
private String partB = "扎钢筋";
private String partC = "浇筑";
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;
}
public String getPartC() {
return partC;
}
public void setPartC(String partC) {
this.partC = partC;
}
@Override
public String toString() {
return "Product{" +
"partA='" + partA + '\'' +
", partB='" + partB + '\'' +
", partC='" + partC + '\'' +
'}';
}
}
package com.life.design.builder;
public class Director {
public Product construct(Builder builder) {//也可用通过setter设置Builder
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
return builder.getProduct();
}
}