Re: [模式] 裝飾者模式(decorator)只有一種結構嗎?

作者: FTM (....)   2013-01-14 17:15:32
或許回歸到 Decorator Pattern 的 Intent 來看會較清楚
Intent of Decorator (from GoF Book):
Attach additional responsibility to an object dynamically.
Decorators provide a flexible alternative to subclassing for
extending functionality.
由上得知, 使用 Decortor 所欲表達物件關係/行為是:
* 系統中有一種特殊的 Object, 姑且稱之為 Component
* Component 常常有額外附加 responsibility 的需要
* 額外附加 responsibility 的動作需要能動態給定
(因此直接 subclassing 並不適宜)
有了以上理解後, 再回頭看看 Decorator 結構上的兩個重點
1. Decorator decorates (as an aggregation) a Component
Decorator 包裝了 component, 透過這層包裝
Decorator 可在正式將責任交付給 component 之前(或之後)
額外進行所欲附加的行為
2. Decorator is a Component
為了確保 Client 仍可正常使用 "包裝" 後的 Component
Decorator 必須也符合 Component 所制定的 Interface
這可透過 Inheritance 達成 (Decorator extends Component)

Links booklink

Contact Us: admin [ a t ] ucptt.com