定義:
建造者模式,又叫生成器模式,它的核心思想是 将一個複雜的對象的建構與它的表示分離,使得同樣的建構過程可以建立不同的表示。
類圖:
建造者模式的幾個角色:
産品(product):需要組裝的具體産品,内部存在自己的屬性和特診。
抽象建造(Builder):對産品部件進行加工,對産品進行組建。可以是抽象類,也可以是接口。
具體建造(ConcreteBuilder):抽象建造的實作。
導演類(Director):建造者~
撸代碼
産品(product):
public class Product {
private String packing;
private String entry;
public String getPacking() {
return packing;
}
public void setPacking(String packing) {
this.packing = packing;
}
public String getEntry() {
return entry;
}
public void setEntry(String entry) {
this.entry = entry;
}
public void showProduct(){
System.out.println("包裝:"+packing);
System.out.println("實體:"+entry);
}
}
抽象建造:
public abstract class Builder {
public abstract void setPacking();
public abstract void setEntry();
public abstract Product getProduct();
}
具體建造1:
public class ConcreteBuilder extends Builder {
Product product;
public ConcreteBuilder(){
product = new Product();
}
@Override
public void setPacking() {
product.setPacking("塑膠");
}
@Override
public void setEntry() {
product.setEntry("肉");
}
@Override
public Product getProduct() {
return product;
}
}
具體建造2:
public class ConcreteBuilder2 extends Builder {
Product product ;
public ConcreteBuilder2(){
product = new Product();
}
@Override
public void setPacking() {
product.setPacking("玻璃");
}
@Override
public void setEntry() {
product.setEntry("水");
}
@Override
public Product getProduct() {
return product;
}
}
導演類:
public class Director {
public Product getProduct(Builder builder){
builder.setPacking();
builder.setEntry();
return builder.getProduct();
}
}
測試類:
public class Client {
public static void main(String[] args) {
Director director = new Director();
Product producta = director.getProduct(new ConcreteBuilder());
producta.showProduct();
System.out.println("===================================");
Product productb = director.getProduct(new ConcreteBuilder2());
productb.showProduct();
}
}
測試結果: