優點
- 比繼承更靈活:執行期動態組合行為,無需靜態繼承階層爆炸。
- 排列組合產生多種行為變體:不同具體裝飾類順序組合產生不同效果。
缺點
- 類別數較少但物件數較多:除核心物件外每層裝飾產生一個物件,除錯困難 (外觀相似)。
- 過度靈活易出錯:動態組合難以靜態分析完整行為。
實作簡化四原則
- 介面相容:裝飾類介面必須與被裝飾類相容。
- Component 輕量化:核心類別勿放過多邏輯/狀態,專注核心職責。
- 單一 ConcreteComponent 可省略抽象 Component:Decorator 直接繼承 ConcreteComponent (見圖)。
- 單一 ConcreteDecorator 可合併 Decorator:無需抽象裝飾層,直接實作具體裝飾類。

單一 ConcreteComponent 時 Decorator 繼承結構
掌握原則可避免過度設計,保持結構清晰。