裝飾者模式意圖:
動態的給乙個物件新增額外的職責。decorator比生產子類靈活。
多用組合,少用繼承。
利用繼承設計子類的行為,是在編譯時靜態決定的,而且所有的子類都會繼承到相同的行為。然而,如果能夠利用組合的做法擴充套件物件的行為,就可以在執行時動態地進行擴充套件
類應設計的對擴充套件開放,對修改關閉。
1.裝飾者和被裝飾物件有相同的超型別。
2.可以用乙個或多個裝飾者包裝乙個物件。
3.裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。
4.物件可以在任何時候被裝飾,所以可以在執行時動態的,不限量的用你喜歡的裝飾者來裝飾物件。
5.裝飾模式中使用繼承的關鍵是想達到裝飾者和被裝飾物件的型別匹配,而不是獲得其行為。
6.裝飾者一般對元件的客戶是透明的,除非客戶程式依賴於元件的具體型別。在實際專案中可以根據需要為裝飾者新增新的行為,做到「半透明」裝飾者。
7.介面卡模式的用意是改變物件的介面而不一定改變物件的效能,而裝飾模式的用意是保持介面並增加物件的職責。
Java IO 裝飾者模式
裝飾模式以對客戶端透明的方式擴充套件物件的功能,是繼承關係的乙個替代方案。裝飾模式通過建立乙個包裝物件,也就是裝飾,來包裹真實的物件。裝飾模式以對客戶端透明的方式動態地給乙個物件附加上更多的責任。換言之,客戶端並不會覺得物件在裝飾前和裝飾後有什麼不同。裝飾模式可以在不創造更多子類的情況下,將物件的功...
Java IO 裝飾者模式
裝飾模式 decorator 裝飾模式以對客戶端透明的方式擴充套件物件的功能,是繼承關係的乙個替代方案。裝飾模式通過建立乙個包裝物件,也就是裝飾,來包裹真實的物件。裝飾模式以對客戶端透明的方式動態地給乙個物件附加上更多的責任。換言之,客戶端並不會覺得物件在裝飾前和裝飾後有什麼不同。裝飾模式可以在不創...
設計模式2 裝飾者模式(java IO)
設計類 開放 關閉原則 要對擴充套件開放,對修改關閉。多用組合,少用繼承。高內聚低耦合 具體原因 當我們設計的類不能滿足我們的需求的時候,我們可能設計乙個類去繼承它,但是這樣就會使物件之間高度的耦合。此時,我們就可以考慮使用裝飾者模式 把物件嵌入我們要擴充套件功能的類中,呼叫他的方法,然後跟我們定義...