設計模式之裝飾者模式 星巴克咖啡

2021-08-17 12:30:35 字數 928 閱讀 2333

package decorate;

/*headfirst設計模式 第三章節 裝飾者模式,裝飾者模式分為裝飾者與被裝飾者,它們必須共享同乙個超類,或者介面,因為只有這樣,才可以用

* 裝飾者替換被裝飾者(被裝飾者物件被裝飾者裝飾後變成了裝飾者物件,只有它們兩個物件可以相互替換才可使用裝飾者模式)

* 本章節把咖啡飲料比作被裝飾者,把調料比作裝飾者,用新的調料來裝飾飲料,得到新的裝飾者物件

*/abstract class beverage //裝飾者與被裝飾者共享的超類,這裡是個抽象類

public abstract double cost(); //抽象方法,獲取**金額

}abstract class condimentdecorator extends beverage //為裝飾者的實現寫的乙個抽象類,所有裝飾者繼承該類

class espresso extends beverage //具體化了乙個飲料類,黑咖啡

public double cost() }

class houseblend extends beverage //具體化了乙個飲料類,混合咖啡

public double cost() }

class mocha extends condimentdecorator //具體化了乙個配料類,摩卡

public string getdescription()

public double cost() }

class whip extends condimentdecorator //具體化了乙個配料類,奶泡,以下**功能與mocha配料一致

public string getdescription()

public double cost() }

public class decorate

}

設計模式 4 裝飾者模式 咖啡機

不同咖啡加調料,用繼承,不靈活,修改和新增方法都不方便。還有比如要雙份mocha 問題擴充套件開發,修改關閉 衝突?事實證明,有一些聰明的oo技術允許系統擴充套件,即使我們不能更改底層 想想觀察者模式 第二章 通過新增新的觀察者,我們可以隨時擴充套件主題,而無需向主題新增 2 每個部分都需要遵守嗎?...

設計模式之 裝飾者模式

一 裝飾者模式 裝飾者模式又稱為包裝模式。動態地給乙個物件增加新的職責。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者模式顧名思義就是對乙個物件進行裝飾,具體怎樣裝飾呢?那就是給這個物件不斷的增加職責方法。給乙個物件增加方法不簡單啊,用繼承或者直接在物件的類中增加方法。如果我們要對自...

設計模式之裝飾者模式

此模式動態將職責附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更具彈性的代替方案,以一圖一概括。要點1 裝飾者和被裝飾物件有相同的超型別。2 可以用乙個或多個裝飾者包裝乙個物件。3 裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。4 物件可以在任何時候被裝飾,所以可...