建造者模式有點(diǎn)類似工廠模式,創(chuàng)建對象,但是建造模式側(cè)重點(diǎn)是流程
第一步,創(chuàng)建一個普通對象
//省略get,set方法
public class Completepart {
private String food;
private String drink;
}
#######第二步,為這個對象創(chuàng)建建造器,方便對外提供,類似工廠
public abstract class Builder {
Completepart completepart = new Completepart();
//返回builder 方便鏈?zhǔn)骄幊? public abstract Builder buildfood();
public abstract Builder builddrink();
public Completepart buildPart() {
return completepart;
}
#######第三步,實例化一兩個具體的建造器
public class APart extends Builder{
@Override
public Builder buildfood() {
completepart.setFood("Afood 作為part1 的實現(xiàn)");
System.err.println("Afood 作為part1 的實現(xiàn)");
return this;
}
@Override
public Builder builddrink() {
completepart.setDrink("Adrink 作為part1 的實現(xiàn)");
System.err.println("Adrink 作為part1 的實現(xiàn)");
return this;
}
}
public class BPart extends Builder{
@Override
public Builder buildfood() {
completepart.setFood("Bfood 作為part2 的實現(xiàn)");
System.err.println("Bfood 作為part2 的實現(xiàn)");
return this;
}
@Override
public Builder builddrink() {
completepart.setDrink("Bdrink 作為part2 的實現(xiàn)");
System.err.println("Bdrink 作為part2 的實現(xiàn)");
return this;
}
}
創(chuàng)建客戶端檢驗
public class Client {
public static void main(String[] args) {
Builder builder = new APart();
Completepart completepart = builder.builddrink().buildfood().buildPart();
System.err.println(completepart);
}
}