public interface Beverage {
public double cost();
}
public class HouseBlend implements Beverage{
@Override
public double cost() {
return 1;
}
}
public class DarkRoast implements Beverage{
@Override
public double cost() {
return 1;
}
}
public abstract class CondimentDecorator implements Beverage{
protected Beverage beverage;
}
public class Mocha extends CondimentDecorator {
public Mocha(Beverage beverage) {
this.beverage = beverage;
}
@Override
public double cost() {
return 1 + beverage.cost();
}
}
public class Milk extends CondimentDecorator {
public Milk(Beverage beverage) {
this.beverage = beverage;
}
@Override
public double cost() {
return 1 + beverage.cost();
}
}
public class StartbuzzCoffee {
public static void main(String[] args) {
Beverage beverage = new HouseBlend();
beverage = new Mocha(beverage);
beverage = new Milk(beverage);
System.out.println(beverage.cost());
}
}
裝飾(decorate)模式
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- 橋接模式 要實現多個有相同的類的操作,他們又有各自的控制單元,如車控鑰匙控制車輛的上鎖、解鎖。如果每種鑰匙都對應每...
- 定義:裝飾者模式指的是在不必改變原類文件和使用繼承的情況下,動態地擴展一個對象的功能。他是通過創建一個包裝對象,也...
- 1. 裝飾者模式 舉個栗子,假如在一家飲料店中有兩種飲料,分別是奶茶和咖啡,相對的有三種調料,蜂蜜、塊糖和摩卡,這...
- AOP在職責模式中也有使用,初學設計模式過程中,AOP是性價比最高的,在實際開發中的作用也很重要,學習AOP你可以...
- 歡迎訪問我的博客:http://wangnan.tech 裝飾者模式 定義 動態地將責任附加到對象上,想要擴展功能...