裝飾器模式 Decorator Pattern

2021-09-26 23:38:58 字數 1465 閱讀 9263

裝飾者模式(decorator pattern)是指在不改變元祐物件的基礎上將功能附加到物件上,提供了比繼承更有彈性的方案(即擴充套件原有物件的功能),屬於結構型模式。裝飾者模式適用於以下場景:

擴充套件乙個類的功能或給乙個類新增附加的職責。

動態的給乙個物件新增功能,這些功能可以再動態地撤銷。

以日常生活中乙個小例子來講解裝飾者模式的應用。如:我們在平時的上班的早上,很多人可能都是起的比較晚,走在路上隨便買點煎餅來對付。

1、首先建立乙個煎餅的抽象類

public abstract class battercake
2、建立乙個基本的煎餅類

public class basebattercake extends battercake 

@override

protected int getprice()

}

3、建立乙個抽象的**裝飾者類(為什麼要建立這個呢?因為有人要加雞蛋,有人要加火腿,有人要加多個[不固定])

public abstract class battercakedecorator extends battercake 

@override

protected string getmsg()

@override

protected int getprice()

}

4、建立乙個加雞蛋的煎餅裝飾器

public class eggdecorator extends battercakedecorator 

@override

protected string getmsg()

@override

protected int getprice()

}

5、建立乙個加火腿的裝飾器

public class sausagedecorator extends battercakedecorator 

@override

protected string getmsg()

@override

protected int getprice()

}

6、所有的步驟都已經寫完了,現在用乙個測試類來測試是否有效。

public class test 

}

列印的結果如下:

煎餅果子+1個雞蛋+1個火腿+1個雞蛋,總**:9
從上面的列印結果可知,裝飾者模式的作用為動態的新增或者或者撤銷某一項功能。由於每人的要求不同,從而可以根據各自的要求制定相應的計畫獲得需要的結果。

而在次示例中,原有的煎餅類basedecorator 並沒有改變,當我們想要一些新的功能的時候只需要利用乙個裝飾器就可以了,這就是裝飾器模式獨特的地方。

裝飾器模式

大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...

裝飾器模式

裝飾器設計模式 對真實物件動態的新增功能 抽象元件 author zhangjianbin public inte ce icar 俱體構件物件 真實的物件 author zhangjianbin class car implements icar 裝飾器物件 author zhangjianbin...

裝飾器模式

一 概念 裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該 盡量使用物件組合,而不是物件繼承來擴...