建造者模式,煎餅果子

大家有沒有吃過煎餅果子?味道超讚還可以根據自己的喜好讓老闆加雞蛋、加生菜、加里脊、加火腿、加辣椒等。


模式定義:將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

案例分析:老闆就是煎餅果子的建造者,只要告訴老闆我加雞蛋加生菜就行,老闆負責生產並把產品交給你。

優點:隱藏產品細節,複雜對象可配置,建造者可以獨立拓展。

注意:與工廠模式的區別是:建造者模式更加關注與零件裝配的順序。

代碼:首先定義煎餅果子

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元




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章