设计模式之组合模式(Composite)
2013-07-22 01:04
363 查看
组合模式原理:组合模式的作用是讲继承同一父类的不同子类对象组合起来,形成一个树形的结构,例如公司的部门组织
代码如下
代码如下
#include <iostream> #include <string> #include <list> using namespace std; /************************************************************************/ /* 组合模式的作用是讲继承同一父类的不同子类对象组合起来 */ /************************************************************************/ class Company { public: Company(string name) { m_name = name; } virtual void show(int depth) { } virtual void Add(Company *pComp) { } protected: string m_name; }; //组合类 class ConcreteCompany:public Company { public: ConcreteCompany(string name):Company(name) { } virtual void Add(Company *pCompany) { m_ListCompany.push_back(pCompany); } virtual void show(int depth) { list<Company*>::iterator iter = m_ListCompany.begin(); for (;iter != m_ListCompany.end();++iter) { (*iter)->show(depth + 1); } } private: list<Company *> m_ListCompany ; }; //具体类 class FinanceDepartment:public Company { public: FinanceDepartment(string name):Company(name){} virtual void show(int depth) { for (int i = 0;i < depth;++i) { cout << "-"; } cout << m_name << endl; } }; class ITDepartment:public Company { public: ITDepartment(string name):Company(name){} virtual void show(int depth) { for (int i = 0;i < depth;++i) { cout << "-" ; } cout << m_name << endl; } }; int main() { Company *root = new ConcreteCompany("总公司"); Company *leaf1 = new FinanceDepartment("财务部"); Company *leaf2 = new ITDepartment("信息部"); root->Add(leaf1); root->Add(leaf2); Company *mid = new ConcreteCompany("分公司"); Company *mleaf1 = new FinanceDepartment("财务部"); Company *mleaf2 = new ITDepartment("信息部"); mid->Add(mleaf1); mid->Add(mleaf2); root->Add(mid); root->show(1); return 0; }
相关文章推荐
- 设计模式实现(十五)--- 组合模式(Composite)
- 设计模式--组合模式(composite)
- Java语言设计模式之组合模式(Composite)
- 设计模式之Composite组合设计模式
- Java设计模式透析之 —— 组合(Composite)
- 设计模式--组合模式Composite(结构性)
- 设计模式之Composite(组合)模式
- 结构模式——设计模式之Composite(组合)[转载自http://www.jdon.com/]
- java设计模式(十)——组合模式(Composite)
- Java设计模式透析之 —— 组合(Composite)
- [设计模式](八):组合模式(Composite)与享元模式(Flyweight)详解
- 设计模式-组合模式(Composite)
- PHP设计模式之组合(Composite)模式
- Java设计模式透析之 —— 组合(Composite)
- 设计模式之Composite(组合)
- 设计模式之(八)组合模式Composite
- 设计模式--组合模式(composite)
- [设计模式] 8 组合模式 Composite
- 设计模式实践系列 (2) - 组合模式 ( Composite )
- 设计模式(八)之 Composite(组合)