建造者模式
代碼示例
public abstract class Builder{
abstract void buildA();//地基
abstract void buildB();//鋼筋工程
abstract void buildC();//鋪電綫
abstract void buildD();//粉刷
//完工:得到產品
abstract Product getProduct();
}
//產品
@Data
public class Product{
private String BuildA;
private String BuildB;
private String BuildC;
private String BuildD;
}
public class Worker extends Builder{
private Product product;
public Worker(){
product = new Product();
}
@Override
void buildA(){
product.setBuildA("地基");
System.out.println("")
}
@Override
void buildB(){
product.setBuildB("鋼筋工程");
System.out.println("鋼筋工程")
}
@Override
void buildC(){
product.setBuildC("鋪電綫");
System.out.println("鋪電綫")
}
@Override
void buildD(){
product.setBuildD("粉刷");
System.out.println("粉刷")
}
@Override
Product getProduct(){
return product;
}
}
//指揮:核心。負責指揮構建一個工程,工程如何構建由他決定
public class Director {
//指揮工人按照順序建房子
public Product build(Builder builder){
builder.buildA();
builder.buildB();
builder.buildC();
builder.buildD();
return builder.getProduct();
}
}
public class Test {
//指揮
Director director = new Director();
//指揮 具體的工人完成產品
Product build = director.build(new Worker());
System.out.println(build.toString());
}