裝飾者模式:動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。
繼承屬於擴充套件形式之一,但不見得達到彈性涉及的最佳方式。
在我們的設計中,應該允許行為可以被擴充套件,而無需修改現有的**。
組合和委託可用於在執行時動態地加上新的行為。
除了繼承,裝飾者模式也可以讓我們擴充套件行為。
裝飾者模式意味著一群裝飾者類,這些類用來包裝具體元件。
裝飾者類反映出被裝飾者的元件型別(事實上,他們具有相同的型別,都經過介面或繼承實現)
裝飾者可以在被裝飾者的行為前面與/或者後面加上自己的行為,甚至將被裝飾者的行為整個取代掉,而達到特定的目的。
你可以用無數個裝飾者包裝乙個元件。
裝飾者一般對元件的客戶是透明的,除非客戶程式依賴於元件的具體型別。
裝飾者會導致設計中出現許多小物件,如果過度使用,會讓程式變得複雜。
裝飾者和被裝飾者物件有相同的超型別。
你可以用乙個或多個裝飾者包裝乙個物件。
既然裝飾者和被裝飾者有相同的超型別,所以在任何需要原始物件(被包裝)的場合,可以用裝飾過的物件代替它。
裝飾者可以在所委託被裝飾者的行為之前與/或之後,加上自己的行為,以達到特定的目的。
物件可以在任何時候被裝飾,所以可以在執行時動態地、不限量地用你喜歡的裝飾者來裝飾物件。
設計模式 裝飾者模式
public abstract class beverage public abstract double cost public abstract class condimentdecorator extends beverage public class darkroast extends be...
設計模式 裝飾者模式
沒什麼特別的,之前看懂了,這次自己再複述一下。畢竟把別人講懂了才是真的懂了。主要參考了head first 設計模式。例子講述的是在為星巴克咖啡的製作訂單的情況,比如客人點了飲料,那麼系統會自動算出 不知道是我沒有體會到,還是這個例子不太合適,算出 那麼簡單的事還需要用到類?不過不影響我們思考裝飾者...
設計模式 裝飾者模式
好幾天沒出部落格了,在學習android的一些新控制項的時候,用到了乙個模式,叫裝飾者模式,所以在此講講這個模式。模式,包含以下四個角色 1 抽象構件 component 角色 給出乙個抽象介面,以規範準備接收附加責任的物件。2 具體構件 concretecomponent 角色 定義乙個將要接收附...