組合模式: 又叫部分整體模式,是用於把一組相似物件當做乙個單一物件.組合模式依據樹形結構來組合物件,用來表示部分以及整體層次. 屬於結構型模式.
目的: 將物件組合成樹形結構以表示"部分-整體"的層次關.組合模式使得使用者對單個物件和組合物件的使用具有一致性.
優點:缺點:
使用場景:
本示例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 在組合...