12 組合模式

2021-07-03 09:06:05 字數 2349 閱讀 5966

1.說明

請參見本文第一章

2.組合模式說明

組合模式:將物件組合成樹形介面以表示『部分-整體』的層次結構。組合模式使得使用者對單個物件和組合物件具有一致性。

為了保持整體和區域性的一致性,整體和區域性具有相同的介面,從而避免判斷該節點是整體還是區域性。介面可以實現為空。

使用範圍:在需求中體現部分與整體的層次的介面時,以及你希望使用者忽略組合物件與單個物件的不同,同一地使用組合介面中的所有物件時,可以考慮使用組合模式

注意:為了表示在樹形中的深度時,會在呼叫中加入步進,以表示在巢狀的處理過程中的節點深度

//公司基類

#ifndef __company_h

#define __company_h

#include

#include

class ccompany

std::string getname()

virtual

void add(ccompany* com)

virtual

void remove(ccompany* com)

virtual

void display(int step) = 0;

virtual

void responsibility(int step) = 0;

private:

std::string m_name;

};#endif

//財政

#ifndef __finacial_h

#define __finacial_h

#include "company.h"

class cfinacia:public ccompany

~cfinacia(){}

virtual

void display(int step)

virtual

void responsibility(int step)

private:

std::string m_responsibility;

};#endif

//人事

#ifndef __manpower_h

#define __manpower_h

#include "company.h"

class cmanpower:public ccompany

~cmanpower(){}

virtual

void display(int step)

virtual

void responsibility(int step)

void set_responsibility(std::string bility)

private:

std::string m_responsibility;

};#endif

//具體公司

#ifndef __realcompany_h

#define __realcompany_h

#include

#include "company.h"

typedef

std::list

companlylist;

class crealcompany:public ccompany

virtual

void add(ccompany* com)

virtual

void remove(ccompany* com)

else

it++;}}

void display(int step)

}void responsibility(int step)

}void set_responsibility(std::string bility)

private:

std::string m_responsibility;

companlylist m_conlist;

};#endif

//client呼叫

#include

#include "company.h"

#include "realcompany.h"

#include "manpower.h"

#include "finacia.h"

int main(void)

《設計模式12 組合模式

組合模式其實是乙個很形象的模式。它也被稱為部分整體模式。組合模式的結構就如同樹狀圖一樣。而樹就是枝幹 葉子的組合,組合模式可以形象的這麼理解。其實資料夾是乙個很好的組合模式的體現。乙個資料夾 樹根root 下可能有多個資料夾 枝幹trunk 可能是單個的檔案 樹葉leaf 而枝幹是可以繼續向下延伸的...

12 組合總和II

題目描述 給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的每個數字在每個組合中只能使用一次。說明 所有數字 包括目標數 都是正整數。解集不能包含重複的組合。示例 1 輸入 candida...

15 組合模式

定義 將物件組合成樹形結構以表示 部門 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。適用 當發現需求中是體現部分與整體層次的結構時,以及你希望使用者可以忽略組合物件與單個物件的不同,同意地適用組合結構中的所有物件時,就應該考慮用組合模式了。asp.net的treevie...