HeadFirst 03,裝飾者模式

2021-10-23 17:32:27 字數 1267 閱讀 1354

動態的將責任附加到物件上。想要擴充套件功能,裝飾者提供有別於繼承的另一種選擇。
注:設計原則,類應該對擴充套件開放,對修改關閉。這樣做的目的是由於,這樣類易於擴充套件,在不修改原有**的情況下,可以搭配新的行為,這樣的設計具有彈性可以應對改變,便於擴充套件

/**

* 裝飾者模式

* * 飲料抽象類,所有的beverage都要繼承超類

* @author utopia

* @date 20200823

*/public abstract class beverage

/*** **

* @param

* @return

*/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 mocha extends condimentdecorator

@override

public string getdescription()

@override

public double cost()

}public class soy extends condimentdecorator

@override

public string getdescription()

@override

public double cost()

}

/**

* 裝飾者模式

* * 飲料抽象類,所有的beverage都要繼承超類

* @author utopia

* @date 20200823

*/public class orderbeverage

}output

espresso--1.0

espressomocha--1.1

espressosoy--2.3

**倉庫:

Head First 裝飾者模式

1.舉乙個簡單的例子 一種飲料黑咖啡,不新增為原味咖啡,新增調料摩卡為摩卡咖啡,新增牛奶味牛奶咖啡,新增巧克力為巧克力咖啡。實現這個例子第乙個想法是基類黑咖啡,然後摩卡咖啡繼承自黑咖啡,牛奶咖啡 巧克力咖啡同理。這樣的實現看來還不錯,也使用了物件導向。那麼,現在又有了新的需求 1 新增兩種及以上的調...

HeadFirst設計模式 裝飾者

裝飾者模式動態地將責任附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。這句話摘自書中,給人讀得很生硬難懂。通俗地來說,裝飾者和被裝飾者有相同的父類,裝飾者的行為組裝著被裝飾者的行為。author lollipop since 2019 11 26 public abstract...

03裝飾者模式

動態地將責任附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。public abstract class beverage 必須在子類實現 public abstract double cost public abstract class condimentdecorator e...