自我整理設計模式之裝飾者模式(三)

2021-10-08 11:40:34 字數 1487 閱讀 9743

一:裝飾者模式

裝飾者模式動態地將責任附加到物件上。

若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。

二:設計原則

類應該對擴充套件開放,對修改關閉

三:例項

*裝飾模式 主方法 星巴克的咖啡

*/public

class

starbuzzcoffee

}/**

* 飲料的抽象類

*/public

abstract

class

beverage

public

abstract

double

cost()

;}/** * 濃縮咖啡

*/public

class

espresso

extends

beverage

@override

public

double

cost()

}/**

* 首選咖啡

*/public

class

houseblend

extends

beverage

@override

public

double

cost()

}/**

* 調料的抽象類 (裝飾者類)

*/public

abstract

class

condimentdecorator

extends

beverage

/*** 調料-奶泡

*/public

class

whip

extends

condimentdecorator

@override

public string getdescription()

@override

public

double

cost()

}/**

* 調料-摩卡

*/public

class

mocha

extends

condimentdecorator

@override

public string getdescription()

@override

public

double

cost()

}設計模式 所涉及的**和知識點 均來自以下參考書籍

《head firsts設計模式》

設計模式學習(三)之裝飾者模式

設計原則 類應該對擴充套件開放,對修改關閉 我們的目標是允許類容易擴充套件,在不修改 的情況下,就可以搭配新的行為,如能實現這樣的目標,這樣的設計具有彈性,可以應對改變,可以接受新的功能來應對改變的需求 裝飾者和被裝飾者物件有相同的超型別 可以用乙個或者多個裝飾者包裝乙個物件 既然裝飾者和被裝飾者有...

設計模式(三) 裝飾者模式

裝飾者結構圖 1 component 被裝飾者的抽象類或介面,定義了新增職責的方法 2 concretecomponent 被裝飾者的具體實現類,如果只有乙個被裝飾者,concretecomponent和component可以合二為一 3 decorator 裝飾者父類,繼承component被裝飾...

設計模式(三)裝飾者模式

星巴克咖啡館想要乙份選單系統,要求能夠計算不同種類咖啡加上不同調料 牛奶 豆漿 摩卡 奶泡。的 tom做了如下實現 每個咖啡都要繼承這個飲料類,然後對是否有各種調料進行配置,然後實現cost 方法。這樣基本解決了這個問題,但是如果現在又增加了幾種飲料,是不是需要更改現在的 呢?如何才能不對以前 做修...