裝飾器模式

2021-09-08 16:41:34 字數 1367 閱讀 3084

裝飾器模式:

decorator pattern:就是動態地把職責附加到已有物件上去,實現功能擴充套件。這種特性,使得裝飾者模式提供了比繼承更具有彈性的解決方案。

例子:美國女孩

// 抽象類 girl

abstract

class

girl

}// 美國女孩

class

americangirl

extends

girl

}// 國產妹子

class

chinesegirl

extends

girl

}// 裝飾者

abstract

class

girldecorator

extends

girl

// 下面以美國女孩示例

// 給美國女孩加上金髮

class

goldenhair

extends

girldecorator

@override

public string getdescription()

}// 加上身材高大的特性

class

tall

extends

girldecorator

@override

public string getdescription()

}// 檢驗一下

public

class

test

}

輸出:

+americangirl

+americangirl+with golden hair

+americangirl+with golden hair+is very tall

**總結:**當需要動態地給乙個物件新增功能,實現功能擴充套件的時候,就可以使用裝飾者模式。

裝飾器模式和介面卡模式區別:

1.關於新職責:介面卡也可以在轉換時增加新的職責,但其主要目的並不在此,而裝飾器模式的主要目的,就是給被裝飾者增加新職責用的。

2.關於原介面:介面卡模式是用新介面來呼叫原介面,原介面對新系統來說是不可見或不可用的;而裝飾者模式原封不動的使用原介面,系統對裝飾的物件也通過原介面來完成使用。

3.關於其包裹的物件:介面卡是知道被適配者的詳細情況的(就是哪個類或哪個介面);而裝飾者只知道其介面是什麼,至於其具體型別(是基類還是其他派生類)只有在執行期間才知道。

裝飾器模式

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

裝飾器模式

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

裝飾器模式

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