設計模式之組合模式

2021-08-26 23:54:44 字數 1916 閱讀 6888

//設計模式之組合模式

/*組合模式將物件組合成樹形結構表示部分整體的層次結構,使得使用者對單個物件和組合

物件的使用具有一致性

透明方式和安全方式,在component中宣告用來管理子物件的方法,這樣實現的所有

component介面的所有子類都具備父類具有的功能,具有完全一致的行為介面。

安全方式在介面中不宣告remove和add的方法,子類也就不需要實現它,在component

中宣告所有用來管理子類物件的方法,由於不透明行,樹中不具備相同的介面,客戶端呼叫

需要作出判斷。

什麼時候使用組合模式?

需求中體現部分與總體的結構層次,希望使用者可以忽略組合物件與單個物件的不同,統一

使用組合結構中所有物件,考慮使用組合模式*/

#include

#include

#include

using

namespace

std;

class company

; string getname()

virtual

void add(company* c) = 0;

virtual

void remove(company* c) = 0;

virtual

void display(int dapth) = 0;

virtual

void lineofduty() = 0;

};class realcompany :public company

; void add(company* c)

void remove(company* c)

void display(int dapth)

}void lineofduty()

}};class hrdepartmemt :public company

; void add(company* c)

void remove(company* c)

void display(int dapth)

void lineofduty()

};class findepartmemt :public company

; void add(company* c)

void remove(company* c)

void display(int dapth)

void lineofduty()

};int main()

執行結果為

結構圖

-北京總公司

-總公司人力資源部

-總公司財務部

--上海分公司

-華東分公司人力資源部

-華東分公司財務部

--南京辦事處

-南京辦事處人力資源部

-南京辦事處財務處

職責總公司人力資源部員工招聘培訓管理

總公司財務部公司財務收支管理

華東分公司人力資源部員工招聘培訓管理

華東分公司財務部公司財務收支管理

南京辦事處人力資源部員工招聘培訓管理

南京辦事處財務處公司財務收支管理

結構圖-北京總公司

-總公司人力資源部

-總公司財務部

--上海分公司

-華東分公司人力資源部

-華東分公司財務部

職責總公司人力資源部員工招聘培訓管理

總公司財務部公司財務收支管理

華東分公司人力資源部員工招聘培訓管理

華東分公司財務部公司財務收支管理

請按任意鍵繼續. . .

看的懂得同學們已經看出了該種設計模式的便利之處在於兩個add和remove兩個空方法宣告,return不返回任何東西,可以新增刪除公司的類和它的子類管理節點。很好的乙個機制。

設計模式之組合模式

組合模式 以 整體 部分 的層次結構,將物件以樹型結構組合起來。如下圖所示 組合模式首先得定義乙個用來管理和訪問部件們的抽象類。public abstract class equipment 再建立乙個組合體的部件 class element equipment 現在我們再來定義乙個組合體,也就是組...

設計模式之 組合模式

有時候我們需要維護一些物件,這些物件具有一定的層次結構,它們之間雖然差異很大,但在使用的時候我們希望能構一致的對待,比如windows控制項,繪圖中的圖形等,這個時候我們就可以採用組合模式來進行管理。組合模式就是將要管理的物件按樹型結構來進行組織,表示成一種 整體 部分 的層次結構,使得使用者對單個...

設計模式之組合模式

組合模式 將物件組合成樹形結構以表示 部分 整體 的層次結構。使得使用者對單個物件和組合物件的使用具有一致性。適用性 想表示物件的部分 整體層次結構,希望使用者忽略組合物件與單個物件的不同,使用者將統一地使用組合結構中的所有物件。典型表示結構圖 宣告組合中的物件宣告介面 在適當的情況下,實現所有類共...