目錄
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)建立抽象檔案類2)建立資料夾類/**
* 抽象檔案類:抽象構件
* @author administrator
*/public abstract class abstractfile
3)建立檔案類/**
* 資料夾類:容器構件
* @author administrator
*/public class folder extends abstractfile
@override
public void add(abstractfile elelemt)
@override
public void remove(abstractfile element)
@override
public void display()
}}
4)建立文字檔案類/**
* @author administrator
*/public class imagefile extends abstractfile
@override
public void add(abstractfile elelemt)
@override
public void remove(abstractfile element)
@override
public void display()
}
/**
* @author administrator
*/public class textfile extends abstractfile
@override
public void add(abstractfile elelemt)
@override
public void remove(abstractfile element)
@override
public void display()
}
6)客戶端測試類/**
* @author administrator
*/public class videofile extends abstractfile
@override
public void add(abstractfile elelemt)
@override
public void remove(abstractfile element)
@override
public void display()
}
7)執行結果/**
* 客戶端測試類
* @author administrator
*/public class client
}
資料夾 :個人資料夾,包含如下資料:本例使用了透明組合模式,在抽象構件類裡面定義了所有方法,包括管理子構件和列印資訊的方法,然後在葉子構件實現類裡面對管理子構件方法進行了出錯處理。在資料夾容器構件類中的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...