組合模式(composite pattern)又叫部分—總體模式,將物件組合成樹形結構以表示『部分-總體』的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。
組合模式使我們樹型結構的問題中。模糊了簡單元素和複雜元素的概念。客戶程式能夠像處理簡單元素一樣來處理複雜元素,從而使得客戶程式與複雜元素的內部結構解耦
。 組合模式讓你能夠優化處理遞迴或分級資料結構。有很多關於分級資料結構的樣例。使得組合模式很實用武之地。關於分級資料結構的乙個普遍性的樣例是你每次使用電腦時所遇到的:檔案系統。
檔案系統由資料夾和檔案組成。每乙個資料夾都能夠裝內容。
資料夾的內容能夠是檔案,也能夠是資料夾。
依照這種方式,計算機的檔案系統就是以遞迴結構來組織的。假設你想要描寫敘述這種資料結構。那麼你能夠使用組合模式composite。
公司管理系統
//公司類 抽象類或介面
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 remove(company c)
public override void add(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 display(int depth)
public override void lineofduty()
公司財務收支管理",name );}}
//client呼叫
組合模式能夠讓客戶一致的使用組合結構和單個物件,組合模式中基本物件能夠被組合成更複雜的組合物件。而這個組合物件又能夠被組合。這樣就不斷地遞迴下去,client**中,不論什麼用到基本物件的地方都能夠使用組合物件。使用者不用關心究竟是處理乙個葉節點還是處理乙個組合元件,也就用不著為定義組合而寫一些選擇推斷語句了,降低了**量就降低了維護量和工作量。
分公司 一部門 組合模式
19.1 分公司不就是一部門嗎?整體與部分可以被一致對待,19.2 組合模式 將物件組合成樹形結構以表示 部分 整體 的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性,namespace 組合模式 component為組合中的物件介面宣告,適當情況下,實現所有類共有介面的預設行為,...
大話設計模式十九 組合模式(分公司 一部門)
組合模式使使用者對單個物件和組合物件的使用具有一致性。應用場景 需求中體香部分和整體層次的結構或希望使用者忽略組合物件與單個物件的不同,可以統一地使用組合結構中的所有物件。優點 基本物件可以被組合成更複雜的組合物件,而這個組合物件又可以被組合,可以不斷地遞迴下去。抽象公司類 public abstr...
大話設計模式十九 組合模式(分公司 一部門)
組合模式使使用者對單個物件和組合物件的使用具有一致性。應用場景 需求中體香部分和整體層次的結構或希望使用者忽略組合物件與單個物件的不同,可以統一地使用組合結構中的所有物件。優點 基本物件可以被組合成更複雜的組合物件,而這個組合物件又可以被組合,可以不斷地遞迴下去。抽象公司類 public abstr...