Decorator Pattern簡單隨筆

2022-01-20 18:19:21 字數 1577 閱讀 9368

裝飾模式(decorator)描述:以對客戶端透明的方式擴充套件物件的功能,是繼承關係的乙個替代方案

使用場景:

1、擴充套件乙個類的功能,或給乙個類增加附加功能

2、動態的給物件增加或刪除功能

3、動態增加一組基本功能,自由組合重複使用這一組功能

組織結構:

1、抽象構件:抽象介面,作用是規範準備接收附加功能的物件

2、具體構件:準備接收附加功能的物件,繼承抽象構件

3、抽象裝飾:持有乙個具體構件物件的例項,並定義乙個與抽象構件一致的介面(也可以繼承於抽象構件)

4、具體裝飾:實現附加功能的物件,繼承抽象裝飾

類關係圖如下所示:

主要是通過operaterdecorator這個抽象類 中的物件組合來啟動原有的base.work()方法,其次是執行額外增加的功能。這個物件可以多次被包裝,使實現的功能動態的增加(而使用繼承的話,子類相應的會大量增加,因此不建議採用繼承來解決此類問題);

額外增加的功能類**如下:

1using

system;

2using

system.collections.generic;

3using

system.text;45

namespace

decoratorpatternsam

616

17public

override

voidwork()

18

22}23

}2425using

system;

26using

system.collections.generic;

27using

system.text;

2829

namespace

decoratorpatternsam

3037

public

override

void

work()

38

4243

private

void

addedworkmethoda()

4448}49

}5051

客戶端**通過包裝物件實現相應的功能:

1using

system;

2using

system.collections.generic;

3using

system.text;45

namespace

decoratorpatternsam624

}25}26

顯示結果如下,將額外的方法增加了進去:

裝飾模式(Decorator Pattern)

裝飾模式 decorator pattern 一句話 繼承乙個抽象類,加上自己的特點,然後再使自己也變成抽象類,然後讓子類繼承的模式,叫裝飾模式。意圖 動態地給乙個物件新增一些額外的職責。就增加功能來說,decorator 模式相比生成子類更為靈活。結構圖 生活中的例子 我們還是拿咖啡來舉例子,現在...

裝飾模式(Decorator Pattern)

裝飾模式指的是在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。concretecomponent具體構件角色 真實物件 decorator裝飾角色 concrete...

裝飾模式(Decorator Pattern)

裝飾模式 decorator pattern 一句話 繼承乙個抽象類,加上自己的特點,然後再使自己也變成抽象類,然後讓子類繼承的模式,叫裝飾模式。意圖 動態地給乙個物件新增一些額外的職責。就增加功能來說,decorator模式相比生成子類更為靈活。結構圖 生活中的例子 我們還是拿咖啡來舉例子,現在有...