[設計模式] 裝飾者模式
Introduction
(原文出處 大話設計模式 )
裝飾者模式 : 動態的給物件加入一些額外的職責。
書上舉了個類似洋娃娃的例子,洋娃娃要穿甚麼衣服端看它的主人心情而定。
因為我們可以自由的任意搭配(今天嘻哈風、明天居家風),所以我們不應該將裝飾的功能寫死在類別裡。
一樣依據開放-封閉原則,將裝飾的寫成一個類別,用來擴充物件的功能。
是的,我表達能力不好。可參考
- http://www.dotblogs.com.tw/pin0513/archive/2010/01/04/12779.aspx
- http://www.builder.com.cn/2007/1103/602734.shtml
Example
Person 類別
Finery 類別
一些具體服飾類別...
在各個具體服裝類別中,show 函式是屬於核心類別的功能,我們亦可在這些類別中加入屬於自己獨有的功能,
並且在執行完 base.show() 後,接著執行自己的函式。
Client 端
執行結果
Conclusion
裝飾者模式是為既有的功能動態的增加更多功能,有效的把核心類別職責和裝飾功能區分開來,而且可以去除相關類別中重覆的裝飾邏輯。
三小俠 小弟獻醜,歡迎指教