定義功能裝飾者模式:動態的將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。
除了繼承,裝飾者模式可以更彈性的擴充套件功能。優點
良好的設計原則,類對擴充套件開放,對修改關閉。
裝飾者類可動態的用於裝飾元件。
可以用無數個裝飾類包裝乙個元件。
缺點 會導致設計中出現很多小物件,使程式變得複雜。
例子
元件基類:總結具體元件類:public abstract class beverage ;
public abstract double cost();
}
public class houseblend extends beverage
public double cost()
}
裝飾器介面(或抽象類):public class darkroast extends beverage
@override
public double cost()
}
裝飾器類:public abstract class condimentdecorator extends beverage
public class milk extends condimentdecorator
@override
public double cost()
@override
public string getdescription()
}
執行類:public class mocha extends condimentdecorator
@override
public string getdescription()
@override
public double cost()
}
執行結果:public class starbuzzcoffee
}
house blend
10.0
dark roast , milk, mocha
13.5
裝飾器模式學習筆記
參考鏈結1 參考鏈結2 裝飾器模式 在不改變原類和不生成子類的情況下,動態為物件新增額外的職責。其比繼承更靈活 更具彈性。不改變原類擴充套件功能,符合開閉原則 對修改關閉,對新增開放 不通過子類擴充套件功能,可以讓類設計更靈活。因為繼承實現子類行為,編譯是靜態的 而用組合擴充套件功能,則可以在程式執...
設計模式學習筆記 裝飾器模式
比如人的行為類,剛剛開始的時候,就能上得了廳堂,下得了廚房。但隨著年歲的增長,每個人歷經了世事,變得不僅是上得了廳堂,下得了廚房。有些人能鬥得過流氓,有些人修得了電腦。那麼如果用 表示這些增加了特殊行為的人。inte ce iperson class person implements iperso...
裝飾器模式
大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...