此設計模式遵循的設計原則之一:類應該支持擴展,而拒絕修改(Open-Closed Principle) 裝飾者模式簡述 裝飾者模式通過組合的方式擴展對象的特性,這種方式允許我們在任何時候對對象的功能進行擴展甚至是運行時擴展,而若我們用繼承來完成對類的擴展則只能在編譯階段實現,所以在某些時候裝飾者模式 ...
本文由@呆代待殆原創,轉載請註明出處。
此設計模式遵循的設計原則之一:類應該支持擴展,而拒絕修改(Open-Closed Principle)
裝飾者模式簡述
裝飾者模式通過組合的方式擴展對象的特性,這種方式允許我們在任何時候對對象的功能進行擴展甚至是運行時擴展,而若我們用繼承來完成對類的擴展則只能在編譯階段實現,所以在某些時候裝飾者模式比繼承(inheritance)要更加靈活。
裝飾者模式具有的一些特征
1,裝飾者(decorator)和被裝飾(擴展)的對象有著相同的超類(supertype)。
2,我們可以用多個裝飾者去裝飾一個對象。
3,我們可以用裝飾過的對象替換代碼中的原對象,而不會出問題(因為他們有相同的超類)。
4,裝飾者可以在委托(delegate,即調用被裝飾的類的成員完成一些工作)被裝飾者的行為完成之前或之後加上他自己的行為。
5,一個對象能在任何時候被裝飾,甚至是運行時。
裝飾者模式的基本結構
我們來看一張《Head first 設計模式》里的圖