設計模式學習 裝飾者模式

2021-08-21 16:19:43 字數 1644 閱讀 4707

當我們來到kfc開始點餐的時候,一開始還不是特別有胃口,所以只點了乙份漢堡**,有乙份漢堡和飲料,但後來又點了乙份薯條,最後乾脆再點乙份炸雞腿,那麼如何來計算我們花了多少錢呢?

在這個場景下,裝飾者模式會起到很好的效果。

定義:動態的將責任附加到物件身上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。

即通過將裝飾者和元件組合的方式,來加入新的行為。行為來自裝飾者和元件的組合,或者是裝飾者和其他裝飾者之間的組合關係。

就以一開始舉的kfc為例子

package decorator;

public abstract class kfcfood

public abstract double cost();

}

package decorator;

/** * **

*/public class setmeal extends kfcfood

@override

public double cost()

}

package decorator;

/** * 小食介面

*/public abstract class refreshments extends kfcfood

package decorator;

/** * 具體裝飾者,包含著被裝飾的物件

* 被裝飾物件可以是具體實現類,也可以是另乙個裝飾者

*/public class frenchfries extends refreshments

@override

public string getdes()

@override

public double cost()

}

package decorator;

/** * 具體裝飾者,包含著被裝飾的物件

* 被裝飾物件可以是具體實現類,也可以是另乙個裝飾者

裝飾者模式符合了組合原則外,還符合這麼一條原則:

其他設計模式:設計模式學習筆記​​​​​​​

設計模式 裝飾者模式

public abstract class beverage public abstract double cost public abstract class condimentdecorator extends beverage public class darkroast extends be...

設計模式 裝飾者模式

沒什麼特別的,之前看懂了,這次自己再複述一下。畢竟把別人講懂了才是真的懂了。主要參考了head first 設計模式。例子講述的是在為星巴克咖啡的製作訂單的情況,比如客人點了飲料,那麼系統會自動算出 不知道是我沒有體會到,還是這個例子不太合適,算出 那麼簡單的事還需要用到類?不過不影響我們思考裝飾者...

設計模式 裝飾者模式

好幾天沒出部落格了,在學習android的一些新控制項的時候,用到了乙個模式,叫裝飾者模式,所以在此講講這個模式。模式,包含以下四個角色 1 抽象構件 component 角色 給出乙個抽象介面,以規範準備接收附加責任的物件。2 具體構件 concretecomponent 角色 定義乙個將要接收附...