首先我們定義drink介面,包含乙個taste方法,返回這個喝的味道怎麼樣
public
inte***ce
drink
然後用tea,實現該介面
public
class
teaimplements
drink
}
年輕人喜歡在飲料裡面加點果汁,例如:茶+果汁 = 果茶,就很流行,建立果汁裝飾器類(抽象裝飾器),擴充套件drink介面,被果汁裝飾過的飲料具備了新的功能,提供維生素。
public
abstract
class
fruitjuicedecorator
implements
drink
@override
public string taste()
public
abstract
void
supplyvitamin()
;public
abstract string fruitjuicetaste()
;}
然後建立兩種具體的果汁裝飾器類,芒果和檸檬
public
class
mangofruitjuice
extends
fruitjuicedecorator
@override
public
void
supplyvitamin()
@override
public string fruitjuicetaste()
}public
class
lemonfruitjuice
extends
fruitjuicedecorator
@override
public
void
supplyvitamin()
@override
public string fruitjuicetaste()
@override
public string taste()
}
最後我們就可以用檸檬汁和西瓜汁裝飾原來的tea,製作出檸檬紅茶和芒果綠茶了
public
class
testdecorator
}
裝飾器的特點是同源。所有類都實現了drink介面,裝飾器覆蓋了原有類的方法並或者對原有的類進行功能上的擴充套件,且通過物件引用而非繼承來實現 設計模式(四) 裝飾器模式
裝飾器模式 動態的將責任附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。意圖 將乙個介面轉換為另乙個介面 設計原則 開閉原則 對類的擴充套件開放,對修改關閉 裝飾器模式設計要點 1.裝飾者和被裝飾物件有相同的超型別 2.可以用乙個或者多個裝飾者去包裝乙個物件 3.裝飾者可以在所...
設計模式(四) 裝飾模式
裝飾模式又被稱為包裝模式。通過對客戶端透明的方式來拓展物件的功能,是繼承關係的一種替代方案 假設,現在要給qq秀裡的人物設計裝扮衣服,每個人可按自己不同的喜好搭配不同的衣服。先建立person類,它裡面有乙個show 展示 也是穿衣服 的方法 public class person public p...
設計模式 裝飾器模式
裝飾器模式 decorator pattern 允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。public inte ce playe...