是將物件組合成樹形結構以表示『部分-整體』的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。組合是物件的集合,而其中的任何乙個物件又可能是乙個組合,或者是乙個簡單的物件。在樹形結構中,訪問組合中所有的物件要求有乙個簡單的單一訪問介面,但同時要求能夠區分開節點和葉子。在構造組合的時候,我們需要決定哪個節點是元素哪個是葉子。在這裡我們可以通過子節點個數進行判斷是不是葉子節點。
比如說乙個公司,裡邊有經理,經理下邊有部門經理,部門經理下邊有小組負責人,小組負責人下邊有員工,這裡可以將這些人分為兩類,一類是雇員類(葉子節點),一類是老闆類(有子節點)。這裡的葉子節點下面是沒有分支的,而子節點則相當於樹枝,下面有子節點,即屬於不同的層次的管理人員,這樣是明顯的組合-整體結構。通過舉例我們介紹一下組合模式結構圖。
例子:
當發現需求中是體現部分與整體層次結構時,以及你希望使用者可以忽略組合物件與單個物件的不同,統一地使用組合結構中的所有物件時,就應該考慮組合模式了static void main(string args)
//公司類 抽象類或介面
abstract class company
public abstract void add(company c);//增加
public abstract void remove(company c);//移除
public abstract void display(int depth);//顯示
public abstract void lineofduty();//履行職責:不同部門需履行不同的職責
}//具體公司類 實現介面 樹枝節點
class concretecompany:company
public override void add(company c)
public override void remove(company c)
public override void display(int depth)
}//履行職責
public override void lineofduty()}}
//人力資源部與財務部類 樹葉節點
//人力資源部
class hrdepartment : company
public override void add(company c)
public override void remove(company c)
public override void display(int depth)
public override void lineofduty()
員工招聘培訓管理", name);}}
//財務部
class financedepartment:company
public override void add(company c)
public override void remove(company c)
public override void lineofduty()
公司財務收支管理", name);
}public override void display(int depth)
}
設計模式C 實現 整體 部分設計模式
整體 部分設計模式有助於聚合元件形成一種語義單元。一種聚合元件 整體 封裝其構成元件 部分 組織它們之間的協作,並為其功能提供乙個公共介面。直接訪問乙個部分是不可能的。例子 示例 include using namespace std class wheel int main void 執行結果 整...
組合模式 針對於「部分 整體」層次結構的設計模式
組合模式又稱合成模式,是用來描述部分與整體關係的一種設計模式。它的定義是 將物件組合成樹形結構以表示 部分 整體 的層次結構,使得使用者對單個物件和組合物件的使用具有一致性。組合模式中的幾個角色 1 component抽象構件 定義參加組合物件的共有方法和屬性,可以定義一些預設的行為或屬性。2 le...
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...