設計原則:類應該對擴充套件開放,對修改關閉。在不修改現有**的情況下,拓展,搭配新的行為。設計更加彈性應對改變,可以接受新的功能應對改變的需求。
遵循開放關閉原則會引入**抽象層次,增加**的複雜度。我們的注意力是在於設計中最有可能發生改變的地方,然後應用開放關閉原則。
允許類拓展,不修改現有的**拓展新行為。
裝飾者模式:
動態的將責任附加到物件上。若要擴充套件功能,裝飾者提供比繼承更有彈性的方法。
該模式中,繼承是為了獲取正確的型別而不是為了去繼承行為。行為來自裝飾者和基礎元件,或裝飾者之間的組合關係。相關物件的組合更加彈性和靈活。
如果依賴繼承,那麼類的行為只能在靜態時決定,換句話說,繼承中類的行為要麼來自基類,要麼來自超類。利用組合,可以把裝飾者混合著用。
我們可以在任何時候,實現新的裝飾者增加行為。而繼承的方式只能去修改**。
裝飾者和被裝飾者擁有相同的超型別。
裝飾者可以在被裝飾者行為之前或之後加上自己的行為,以達到特定的目的。
封裝變化。多用組合少用繼承。針對介面程式設計而不是針對實現程式設計。為互動物件之間的松耦合努力。對擴充套件開放,對修改關閉。
設計模式 裝飾者模式
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 角色 定義乙個將要接收附...