設計模式學習(四)——裝飾者模式

參考書——《HeadFirst設計模式》


* 裝飾者和被裝飾對象有相同的超類型

* 你可以用一個或多個裝飾者包裝一個對象。

* 既然裝飾者和被裝飾(亦即被包裝的組件)對象有相同的超類型,所以在任何需要原始對象(被包裝的)的場合, 可以用裝飾過的對象代替它。

* 裝飾者可以在所委託被裝飾者的行爲之前與/或之後,加上自己的行爲,以達到特定的目的。

* 對象可以在任何時候被裝飾,所以可以在運行時動態地、不限量地用你喜歡的裝飾者來裝飾對象。


裝飾者模式動態地將責任附加到對象上。若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案。


說明:

1.利用繼承達到“類型匹配”,而不是利用繼承獲得“行爲”。如果依賴繼承,那麼類的行爲只能在編譯時靜態決定。

2.將裝飾者與組件組合時,就是在加入新的行爲。所得到的新行爲,並不是繼承自超類,而是由組合對象得來的。行爲來自裝飾者和基礎組件,或與其他裝飾者之間的組合關係。且用到了委託的做法。

3.java 的I/O也用到了此模式。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章