大家有沒有吃過煎餅果子?味道超讚還可以根據自己的喜好讓老闆加雞蛋、加生菜、加里脊、加火腿、加辣椒等。
模式定義:將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
案例分析:老闆就是煎餅果子的建造者,只要告訴老闆我加雞蛋加生菜就行,老闆負責生產並把產品交給你。
優點:隱藏產品細節,複雜對象可配置,建造者可以獨立拓展。
注意:與工廠模式的區別是:建造者模式更加關注與零件裝配的順序。
代碼:首先定義煎餅果子
public class Pancake {
public Double price; //價格
public String name; //名稱
private Pancake() {
price = 3.00;
name = "煎餅果子";
}
//建造者(老闆)
public static class Builder {
private Pancake pancake = new Pancake();
public Builder addCaraway() {
pancake.price += 0.5;
pancake.name += "\n加香菜";
return this;
}
public Builder addShallot() {
pancake.price += 0.5;
pancake.name += "\n加蔥末";
return this;
}
public Builder addHam() {
pancake.price += 1.5;
pancake.name += "\n加火腿";
return this;
}
public Builder addEgg() {
pancake.price += 2;
pancake.name += "\n加雞蛋";
return this;
}
public Builder addLettuce() {
pancake.price += 0.5;
pancake.name += "\n加生菜";
return this;
}
public Builder addChine() {
pancake.price += 2;
pancake.name += "\n加裏脊肉";
return this;
}
public Builder addPepper() {
pancake.price += 0.5;
pancake.name += "\n加辣椒";
return this;
}
public Builder addCracknel() {
pancake.price += 1.0;
pancake.name += "\n加脆餅";
return this;
}
public Pancake builder() {
return pancake;
}
}
}
測試public class Test {
public static void main(String args[]) {
Pancake pancake = new Pancake.Builder()
.addCaraway()
.addChine()
.addHam()
.addEgg()
.addPepper()
.builder();
System.out.println(pancake.name);
System.out.print("總價:" + pancake.price + "元");
}
}
結果煎餅果子
加香菜
加裏脊肉
加火腿
加雞蛋
加辣椒
總價:9.5元