組合模式 C

2022-08-01 08:00:09 字數 1857 閱讀 6392

組合模式: 又叫部分整體模式,是用於把一組相似物件當做乙個單一物件.組合模式依據樹形結構來組合物件,用來表示部分以及整體層次. 屬於結構型模式.

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

優點:缺點:

使用場景:

本示例copy自:

/*

* 關鍵**:樹枝內部組合該介面,並且含有內部屬性list,裡面放component。

*/#include #include #include using namespace std;

//抽象類,提供組合和單個物件的一致介面

class company

virtual ~company()

virtual void add(company* ) = 0;

virtual void remove(const string&) = 0;

virtual void display(int depth) = 0;

virtual const string& name()

protected:

string m_name;

};//具體的單個物件實現類,「樹枝」類

class headcompany : public company

virtual ~headcompany()

void add(company* company) override

void remove(const string& strname) override}}

void display(int depth) override

cout << this->name().data() << endl;

list>::iterator iter = m_companylist.begin();

for(; iter!= m_companylist.end(); iter++)

}private:

list> m_companylist;

};//具體的單個物件實現類,「樹葉」類

class researchcompany : public company

virtual ~researchcompany()

void add(company* ) override

void remove(const string&) override

void display(int depth) override

cout << m_name.data() << endl;

}};//具體的單個物件實現類,「樹葉」類

class salescompany : public company

virtual ~salescompany()

void add(company* ) override

void remove(const string&) override

void display(int depth) override

cout << m_name.data() << endl;

}};//具體的單個物件實現類,「樹葉」類

class financecompany : public company

virtual ~financecompany()

void add(company* ) override

void remove(const string&) override

void display(int depth) override

cout << m_name.data() << endl;

}};int main()

c 組合模式

include include include using namespace std class company virtual void add company c virtual void remove company c virtual void display int depth virt...

C 組合模式

組合模式 composite pattern 組合多個物件形成樹形結構以表示具有 整體 部分 關係的層次結構。組合模式對單個物件 即 葉子構件 和組合物件 即 容器構件 的使用具有一致性,組合模式又被稱為 整體 部分 part whole 模式,屬於物件結構型模式。uml 結構圖 透明組合模式 um...

C 設計模式 組合模式

一.概述 組合模式,將物件組合成樹形結構以表示 部分 整體 的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。結構 1.component 是組合中的物件宣告介面,在適當的情況下,實現所有類共有介面的預設行為。宣告乙個介面用於訪問和管理component子部件。2.leaf 在組合...