设计模式---组合模式
来源:互联网 发布:驱动器加密软件 编辑:程序博客网 时间:2024/06/07 08:55
组合模式
将对象组合成树形结构以表示 部分、整体的层次结构。使得用户对单个对象和组合对象的使用具有一致性。
#include<iostream>
#include<list>using namespace std;
class Company
{
protected:
string m_name;
public:
Company(string name):m_name(name){}
virtual void add(Company c){}
virtual void show(int depth){}
};
class ConcreteCompany: public Company
{
private:
list<Company*> child;
public:
ConcreteCompany(string name):Company(name){}
void add(Company* c)
{
child.push_back(c);
}
void show(int depth)
{
for(int i = 0;i < depth; i++)
cout<<"-";
cout<<m_name<<endl;
list<Company*>::iterator iter = child.begin();
for(;iter!= child.end();iter++)
(*iter)->show(depth+2);
}
};
class HRDepartment:public Company
{
public:
HRDepartment(string name):Company(name){}
void add(Company*c){}
void show(int depth )
{
for(int i = 0;i<depth;i++)
cout<<"-";
cout<<m_name<<endl;
}
};
class FinanceDepart:public Company
{
public:
FinanceDepart(string name):Company(name){}
void add(Company*c){}
void show(int depth )
{
for(int i = 0;i<depth;i++)
cout<<"-";
cout<<m_name<<endl;
}
};
int main()
{
ConcreteCompany *root = new ConcreteCompany("root");
root->add(new HRDepartment("root hr"));
root->add(new FinanceDepart("root finance"));
ConcreteCompany *ch1 = new ConcreteCompany("child 11");
ch1->add(new HRDepartment("child 11 hr"));
ch1->add(new FinanceDepart("child 11 finance"));
root->add(ch1);
ConcreteCompany *ch2 = new ConcreteCompany("child 22");
ch2->add(new HRDepartment("child 22 hr"));
ch2->add(new FinanceDepart("child 22 finance"));
root->add(ch2);
ConcreteCompany *ch3 = new ConcreteCompany("child 33");
ch3->add(new HRDepartment("child 33 hr"));
ch3->add(new FinanceDepart("child 33 finance"));
ConcreteCompany *ch4= new ConcreteCompany("child 44");
ch4->add(new HRDepartment("child 44 hr"));
ch4->add(new FinanceDepart("child 44 finance"));
ch3->add(ch4);
root->add(ch3);
root->show(0);
return 0;
}
阅读全文
0 0
- 设计模式:组合模式
- 设计模式-----组合模式
- 设计模式 组合模式
- 设计模式--组合模式
- 设计模式---组合模式
- 【设计模式】组合模式
- 设计模式 - 组合模式
- 设计模式----组合模式
- 设计模式 - 组合模式
- 设计模式:组合模式
- 设计模式 - 组合模式
- 设计模式-组合模式
- 设计模式 - 组合模式
- 【设计模式】组合模式
- 设计模式--组合模式
- 设计模式-组合模式
- 设计模式:组合模式
- 设计模式-----组合模式
- iOS逆向工程---OS工具(Theos)
- 整合SpringMVC+Spring+Mybatis+mysql的maven配置文件pom.xml
- logback logback.xml常用配置详解(一)<configuration> and <logger>
- linux几种关机命令总结
- lua继承小记
- 设计模式---组合模式
- WWDC2017全球开发者大会汇总
- React Native 嵌入原生项目混合开发-多个RN Activity
- hadoo分布式文件操作HDFS
- 双击jar文件运行程序
- 十图详解TensorFlow数据读取机制(附代码)
- Glide图片框架使用详细介绍(五)之Glide-源码详解
- ubuntu14.04配置caffe
- 整理linux软件管理