diff --git a/02. PARA/03. Resources(資源)/Design Pattern.md b/02. PARA/03. Resources(資源)/Design Pattern.md index f9b5a62..c822e15 100644 --- a/02. PARA/03. Resources(資源)/Design Pattern.md +++ b/02. PARA/03. Resources(資源)/Design Pattern.md @@ -151,27 +151,46 @@ notify()則是當發生變化時,用來通知所有觀察者的實作。 假設這樣寫: - !!!col - 1 - + ### Ingredient class + ```cpp + class IngredientBubble { ... }; + class IngredientRedbean { ... }; + class IngredientGreenbean { ... }; + class IngredientFairyGrass { ... }; + ``` -````col - + - 2 + ### Beverage class + ```cpp + class BeverageMilkTea { ... }; + class BeverageGreenTea { ... }; + class BeverageBlackTea { + IngredientBubble* bubble; + IngredientRedbean* redbean; + IngredientGreenbean* greenbean; + IngredientFairyGrass* fairyGrass; + } + ``` + +每個飲料的class裡面都將每個配料定義為一個member,如果客人有加配料的話,我們就將配料實例化,假設奶茶加了珍珠: ```cpp -Ingredients -class BeverageMilkTea { ... }; -class BeverageGreenTea { ... }; class BeverageBlackTea { - -} + void addBubble() { + if (!bubble) bubble = new IngredientBubble(); + } +}; ``` - +要算價格的時候: ```cpp -class BeverageMilkTea { ... }; -class BeverageGreenTea { ... }; class BeverageBlackTea { - -} -``` - -```` - + void cost() { + if (bubble) cost += 10; + if (redbean) cost += 10; + if (greenbean) cost += 10; + if (fairyGrass) cost += 10; + } +private: + int32_t cost = 30; // 奶茶本身10元 +}; +``` \ No newline at end of file