裝飾器模式筆記

2021-06-27 01:56:47 字數 1431 閱讀 7166

定義

裝飾者模式:動態的將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。

功能

除了繼承,裝飾者模式可以更彈性的擴充套件功能。

優點

良好的設計原則,類對擴充套件開放,對修改關閉

裝飾者類可動態的用於裝飾元件。

可以用無數個裝飾類包裝乙個元件。

缺點 會導致設計中出現很多小物件,使程式變得複雜。

例子

元件基類:

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...