裝飾器模式

2021-07-15 08:54:44 字數 2004 閱讀 5484

一、概念:

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

盡量使用物件組合,而不是物件繼承來擴充套件和復用功能。裝飾器模式就是基於物件組合的方式,可以很靈活的給物件新增所需要的功能。裝飾器模式的本質就是

動態組合。動態是手段,組合才是目的。總之,裝飾模式是通過把複雜的功能簡單化,分散化,然後再執行期間,根據需要來動態組合的這樣乙個模式。

結構圖:

裝飾器模式中的角色:

抽象構件(component)角色:給出乙個抽象介面,以規範準備接收附加責任的物件。

具體構件(concretecomponent)角色:定義乙個將要接收附加責任的類。

裝飾(decorator)角色:持有乙個構件(component)物件的例項,並定義乙個與抽象構件介面一致的介面。

具體裝飾(concretedecorator)角色:負責給構件物件「貼上」附加的責任。

示例**:

1 package com.test.patten.decorator;

2 3 public inte***ce person

1 package com.test.patten.decorator;

2 3 public class employee implements person

9 10 }

1 package com.test.patten.decorator;

2 3 public abstract class manager implements person

1 package com.test.patten.decorator;

2 3 public class managera extends manager

10 @override

11 public void docoding()

15 /**

16 * 專案經理開始前期準備工作

17 */

18 public void doearlywork()

23 }

1 package com.test.patten.decorator;

2 3 public class managerb extends manager

10 @override

11 public void docoding()

15 /**

16 * 專案經理開始專案收尾工作

17 */

18 public void doendwork()

21

22 }

測試:

1 package com.test.patten.decorator;

2 3 public class client

11 }

專案經理a做需求分析專案經理a做架構設計專案經理a做詳細設計程式設計師敲**。。。。專案經理b 在做收尾工作

裝飾器模式

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

裝飾器模式

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

裝飾器模式

裝飾器模式 動態地為物件新增一些額外的功能。特點 1 裝飾者和被裝飾者擁有相同的超型別,可以是介面可以是抽象類。2 裝飾類中包含乙個被裝飾類元件的引用 3 可以為被裝飾物件新增額外的功能 4 在裝飾類中重寫被裝飾元件類中的方法,並對被裝飾元件類中對應的方法呼叫。結構圖 1 component是裝飾器...