一、概念:
裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該
盡量使用物件組合,而不是物件繼承來擴充套件和復用功能。裝飾器模式就是基於物件組合的方式,可以很靈活的給物件新增所需要的功能。裝飾器模式的本質就是
動態組合。動態是手段,組合才是目的。總之,裝飾模式是通過把複雜的功能簡單化,分散化,然後再執行期間,根據需要來動態組合的這樣乙個模式。
結構圖:
裝飾器模式中的角色:
●抽象構件(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是裝飾器...