vault backup: 2022-06-21 16:15:48

Affected files:
02. PARA/03. Resources(資源)/Design Pattern.md
This commit is contained in:
2022-06-21 16:15:49 +08:00
parent 517a8429a8
commit 4527580a0d

View File

@@ -144,4 +144,34 @@ notify()則是當發生變化時,用來通知所有觀察者的實作。
觀察者方面必須實作 update() 才能收到通知。
## 裝飾者模式Decorator Pattern
由「裝飾者」
「裝飾者」通常與「被裝飾者」有同樣的界面,「裝飾者」會取代「被裝飾者」的界面,進而改變「被裝飾者」的行為。
裝飾者模式讓物件可以動態的改變行為,進為符合不同的需求。
以書上的例子來說我們多種飲料每種飲料都可以加上不同的配料。例如有奶茶、綠茶、紅茶3種飲料另外有珍珠、紅豆、綠豆、仙草4種配料我們要如何設計出適合的類別來讓每種飲料都可以隨寄的搭配配料呢
假設這樣寫:
- !!!col
- 1
````col
```cpp
Ingredients
class BeverageMilkTea { ... };
class BeverageGreenTea { ... };
class BeverageBlackTea {
}
```
```cpp
class BeverageMilkTea { ... };
class BeverageGreenTea { ... };
class BeverageBlackTea {
}
```
````