結構型模式 組合模式

2021-09-13 22:34:51 字數 3058 閱讀 2550

目錄

1.組合模式概述

1.1 定義

1.2 作用

1.3 應用場景

1.4 分類

1.4.1 透明組合模式

1.4.2 安全組合模式

2.類圖

3.角色

4.案例

4.1 說明

4.2 建立

4.3 分析

5.優缺點

5.1 優點

5.2 缺點

在組合模式中通過多個物件形成樹形結構以表示整體-部分層次。組合模式使得使用者對單個物件和組合物件的使用具有一致性。

將物件組織到樹型結構中,可以用來描述整體與部分的關係。

當發現需求中是體現部分與整體層次的結構時,以及希望使用者可以忽略組合物件與單個物件的不同,統一的使用組合結構中的所有物件時,就乙個考慮使用組合模式。

類圖如下所示:

component表示抽象構件,它可以是介面或抽象類,為葉子構件和容器構件物件宣告介面。在該角色中可以包含所有子類共有行為的宣告和實現。在抽象構件中還定義了訪問及管理子構件的方法,如add子構件,remove子構件,get子構件等。leaf

表示葉子構件,在組合中表示葉子節點物件。葉子節點沒有子節點,它實現抽象構件宣告的基本行為。

composite

表示同期構件,定義了包含子節點(可以是葉子節點或容器節點)的構件的行為,並儲存子節點

(葉子節點或容器節點),實現了抽象構件中定義的操作葉子構件的行為。

1)建立抽象檔案類

/**

* 抽象檔案類:抽象構件

* @author administrator

*/public abstract class abstractfile

2)建立資料夾類

/**

* 資料夾類:容器構件

* @author administrator

*/public class folder extends abstractfile

@override

public void add(abstractfile elelemt)

@override

public void remove(abstractfile element)

@override

public void display()

}}

3)建立檔案類

/**

* @author administrator

*/public class imagefile extends abstractfile

@override

public void add(abstractfile elelemt)

@override

public void remove(abstractfile element)

@override

public void display()

}

4)建立文字檔案類

/**

* @author administrator

*/public class textfile extends abstractfile

@override

public void add(abstractfile elelemt)

@override

public void remove(abstractfile element)

@override

public void display()

}

/**

* @author administrator

*/public class videofile extends abstractfile

@override

public void add(abstractfile elelemt)

@override

public void remove(abstractfile element)

@override

public void display()

}

6)客戶端測試類

/**

* 客戶端測試類

* @author administrator

*/public class client

}

7)執行結果

資料夾 :個人資料夾,包含如下資料:
本例使用了透明組合模式,在抽象構件類裡面定義了所有方法,包括管理子構件和列印資訊的方法,然後在葉子構件實現類裡面對管理子構件方法進行了出錯處理。在資料夾容器構件類中的display方法裡面呼叫了其子葉子構件成員物件的display方法,從而實現了對整個樹形結構的遍歷。

1.組合模式可以清楚的定義分層次的複雜物件,表示物件的全部或部分層次,使得增加新的構件比較容易。

2.組合模式解耦了客戶程式與複雜元素內部結構,從而使客戶程式可以像處理簡單元素一樣來處理複雜元素。

結構型模式 組合

將物件組合成樹形結構以表示 部分 整體 的層次結構,使得使用者對單個物件和組合物件的使用具有一致性。組合模式 composite 經常用於樹形結構,為了簡化 使用composite可以把乙個葉子節點與乙個父節點統一起來處理。我們來看乙個具體的例子。在xml或html中,從根節點開始,每個節點都可能包...

結構型模式之組合模式

組合模式 composite 將物件組合成 部分 整體 的樹形結構,使使用者對單個物件和組合物件的使用具有一致性。組合模式包含以下三部分 inte ce componentclass composite implements component override public void remove...

9 結構型模式 組合模式

模式動機 composite pattern 將物件組合成樹形結構來表示 整體 部分 層次。操作時,使得對部分的操作與對整體的操作具有一致性。模式結構圖 典型的composite結構為 模式 bt 組合模式.h ifndef cp h define cp h include include usin...