裝飾器模式

2021-09-24 13:41:27 字數 1828 閱讀 6488

裝飾器模式解決的問題是:針對原有物件,進行任意或者動態的擴充套件組合。

實現方案:實現乙個通用介面作為要拓展的物件,將主要功能委託給基礎物件,然後增添功能。遞迴的方式實現,既使用了繼承又使用了委託。

package decorator;

/** * 冰淇淋,定義裝飾物執行的公共介面.

* @author wwe

* */

public

inte***ce

icecreamcomponent

package decorator;

public

class

concreteicecream

implements

icecreamcomponent

}

package decorator;

/** * 裝飾器基類.

* @author wwe

* */

public

abstract

class

toppingdecorator

implements

icecreamcomponent

/** * 留給裝飾器實現.

*/public

abstract

void

addtopping()

;}

package decorator;

public

class

candytopping

extends

toppingdecorator

/** * 增加糖果裝飾.

*/public

void

addtopping()

}

package decorator;

public

class

nutstopping

extends

toppingdecorator

public

void

addtopping()

}

package decorator;

public

class

peanuttopping

extends

toppingdecorator

public

void

addtopping()

}

package decorator;

public

class

client

}```python

執行結果

plain icecream ready for some toppings!

candy topping added

peanut topping added

nuts topping added

component:介面,定義裝飾物執行的公共操作

concretecomponent:起始物件,在其基礎上動態的增加功能,需要首先建立該物件,並將通用的方法新增到此物件中。

decorator抽象類是所有裝飾類的基類,裡面包含的成員變數component指向了被裝飾的物件。

concretedecorator:裝飾類,增加需要裝飾的特徵,可以根據需求實現不同的裝飾類,每個類提供的裝飾特徵都能加入到被裝飾物件中。

![在這裡插入描述](

裝飾器模式

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

裝飾器模式

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

裝飾器模式

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