裝飾模式

 

裝飾模式  

說明:

裝飾模式是在不必改變原類文件和使用繼承的情況下,動態的擴展一個對象的功能。它是通過創建一個包裝對象,也就是裝飾來包裹真實的對象。

裝飾模式的特點;

(1)裝飾對象和真實對象有相同的接口。這樣客戶端對象就可以以和真實對象相同的方式和裝飾對象交互。
(2) 裝飾對象包含一個真實對象的索引(reference)
(3) 裝飾對象接受所有的來自客戶端的請求。它把這些請求轉發給真實的對象。
(4) 裝飾對象可以在轉發這些請求以前或以後增加一些附加功能。這樣就確保了在運行時,不用修改給定對象的結構就可以在外部增加附加的功能。在面向對象的設計中,通常是通過繼承來實現對給定類的功能擴展。

裝飾模式
用來擴展特定對象的功能
不需要子類
動態地
運行時分配職責

防止由於子類而導致的複雜和混亂

更多的靈活性

對於一個給定的對象,同時可能有不同的裝飾對象,客戶端可以通過它的需要選擇合適的裝飾對象發送消息。

很容易增加任何的

優點:裝飾模式和繼承都是對功能的擴展,而裝飾模式使用的是組合,可以不用繼承而達到這一效果.使用過多的繼承會增加系統的複雜性和偶合性

缺點:裝飾模式要產生一些輔助性的對象,但這些對象看上去都比較像,不是很容易檢查(好的命名應該是提高檢查的一個辦法)

裝飾模式是爲已有功能動態地添加更多功能的一種方式。

當系統需要新功能的時侯,是向舊的類中添加新的代碼。這些新加的代碼通常裝飾了原有類的核心職責或主要行爲,但這種做法的問題在於,它們在主類中加入新的字段,新的方法,和新的邏輯,從而增加了主類的複雜度,而這些新加入的東西僅 僅是爲了滿足一些只在某種特定情況下才會執行的特殊行的需要。而裝飾模飾模式卻提供了一個非常好的解決方案,它把每個要裝飾的功能放在單獨的類中,並讓這個類包裝它所要裝飾的對象。因此,當需要執行特殊爲時,客戶代碼就可以在運行時根據需要有選擇地、按順序地使用裝飾功能包裝對象了。

 

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