設計模式 組合模式

2021-10-23 06:41:40 字數 2615 閱讀 5623

設計模式--組合模式

樹狀結構在日常生活中十分常見。它有乙個根節點、若干個樹枝節點和若干個葉子節點。組合模式也與樹狀結構有些許聯絡。

一、模式初識

1.什麼是組合模式(composite)?

組合模式(composite)有時又叫部分—整體模式。組合模式將物件組織到數結構中,可以用來描述整體與部分的關係。組合模式可以使客戶端將單純元素與復合元素同等看待。

2.組合模式是怎樣的結構?

直接上uml圖:

①抽象構建(component)角色:這是乙個抽象角色,它給參與組合的物件規定乙個介面。這個角色給出共有介面及預設行為。

②樹葉構件(leaf)角色:代表參加組合的樹葉物件。乙個樹葉物件沒有下級子物件。

③樹葉構件(composite)角色:代表參加組合的有子物件的物件,並給出樹枝構建物件的行為。

3.什麼是物件的樹結構?

乙個樹結構由兩種節點組成:樹枝節點和樹葉節點。樹枝節點可以有子節點,而乙個樹葉節點不可以有子節點。除了根節點外,其它節點有且只有乙個父節點。

二、模式深入

1.組合模式的目的:

讓客戶端以一種統一的方式來操作。

2.物件樹

組合模式會形成樹狀結構,這代表著所有可以使用物件樹來描述或操作的功能,都可以考慮使用組合模式。

3.組合模式的實現根據所實現介面的區別分為兩種形式,分別稱為安全模式和透明模式。

①透明模式:在component裡面宣告所有的用來管理物件的方法。

優點:所有的構件類都有相同的介面。客戶端可以同等的對待所有的物件。

缺點:不夠安全,因為樹葉類物件和合成類物件在本質上是有區別的。add()等方法沒有意義,在編譯時期不會出錯,而會在執行期間才會出錯。

②安全模式:在composite類裡面宣告所有的用來管理子類物件的方法。

優點:安全,程式會在編譯期間出錯。

缺點:不夠透明,樹葉類和合成類將具有不同的介面。

4.使用場景

①需求中是體現部分與整體層次的結構時。

②希望使用者忽略組合物件與單個物件的不同,統一的使用組合結構中的所有物件時。

5.組合模式的優缺點

①優點(1)定義了包含基本物件和組合物件的類層次結構。

(2)統一了組合物件和葉子物件。

(3)簡化了客戶端呼叫。

(4)更容易擴充套件

②缺點(1)很難限制組合中的元件型別

6.本質:統一葉子物件和組合物件

三、模式例項

實現商品類別樹

namespace 組合模式

public abstract void add(component c);

public abstract void remove(component c);

public abstract void display(int depth);

}}using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 組合模式

public override void add(component c)

public override void display(int depth)

public override void remove(component c)

}}using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 組合模式

public override void add(component c)

public override void display(int depth)

}public override void remove(component c)

}}using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 組合模式}}

輸出:

+服裝

+**-襯衣

-夾克+**

-裙子-套裝

組合模式 設計模式 組合模式

1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...

設計模式 組合模式 組合模式使用

目錄 組合模式概括 組合模式使用場景 定義 將物件組合成樹形結構以表示 部分 整體 的層次結構 作用 使客戶端對單個物件和組合物件保持一致的處理方式 使用場景 1.希望客戶端可以忽略組合物件與單個物件的差異時 2.處理乙個樹形結構時 優點 清楚的定義分層次的複雜物件,表示物件的全部或部分層次 讓客戶...

設計模式 組合設計模式

組合模式 composite pattern 又稱部分整體模式,用於把一組相似的物件當做乙個單一的物件,組合模式依據樹形來組合物件,用來表示部分以及整體層次,為結構型設計模式,它建立來物件組的樹形結構。意圖 將物件組合成樹形結構以表示 部分 整體 的結構層次,組合模式使得使用者對單個物件和組合物件的...