概念:
動態的給 一個對象
添加一些額外的職責。
使用場景
當系統需要新增功能的時候,通常的方法是向類中添加新代碼,這些新加的代碼通常裝飾了原有類的核心職責,從而產生新的邏輯,這樣就增加了主類的復雜度,而且又違反了 開關原則
,這些新加入的東西緊緊為了滿足一些只在某種特定情況下才會執行的特殊行為的需要,這個時候可以采用裝飾模式。
分析
- 經常喜歡吃板面,板面的
種類
有很多種類; - 我們知道板面在煮出來就是
一碗板面
,根據客戶的需求加入
雞蛋、丸子、豆皮等組合方式,便形成了菜譜上的雞蛋板面,丸子板面,豆皮板面等等... - 以上
一碗板面
就是原有功能(一個對象
),而根據需求加入
,也就是動態添加額外的職責;
設計
decorator.png

decorator