Composite Design Pattern 设计模式组合
2015-12-11 19:53
579 查看
设计模式组合,它能够更类组合在一类,形成一个树状结构。
执行:
#include <set> #include <iostream> #include <string> using namespace std; class Coporate { protected: string name; set<Coporate *> coporate; public: explicit Coporate(string n = "", string d = "") : name(n), coporate() {} virtual string getName() { return name; } virtual void add(Coporate *c) { coporate.insert(c); } virtual void show() { set<Coporate *>::iterator it = coporate.begin(); for ( ; it != coporate.end(); it++) { (*it)->show(); } } virtual void remove(Coporate *c) { coporate.erase(c); } }; class VicePresident : public Coporate { string division; public: explicit VicePresident(string n = "", string d = "") { name = n; division = d; } virtual void show() { cout<<"Vice President's Name is : "<<name <<"; In Division: "<<division<<endl;//关键处 } }; class Division : public Coporate { public: explicit Division(string n = "") { name = n; } }; class Coporation : public Coporate { public: Coporation() {} }; int main() { Coporation corp; Division sale("Sales Department"); VicePresident vp1("Jelly", sale.getName()); VicePresident vp2("Kelly", sale.getName()); sale.add(&vp1); sale.add(&vp2); Division tech("Technique Department"); VicePresident vp3("Qilly", tech.getName()); VicePresident vp4("Melly", tech.getName()); tech.add(&vp3); tech.add(&vp4); VicePresident vp("Billy", "At large"); corp.add(&vp); corp.add(&sale); corp.add(&tech); corp.show(); return 0; }
执行:
相关文章推荐
- c#读写文件
- 【转】机器学习最佳入门学习资料汇总
- 杭电2037-今年暑假不AC(贪心)
- 【原】基于64位Centos6.2的mcrouter使用简介
- 第二次作业
- Google的可用Hosts文件
- The beginning iOS8 Programming with Swift 中文翻译 - 8
- 【转】机器学习最佳入门学习资料汇总
- Maven隐士变量
- ldpd hello的处理流程
- 《剑指offer》——二维数组中的查找
- HDU 2955 Robberies
- Python: 消除print的自动换行
- 【查找算法】——顺序查找、折半查找、分块查找(索引查找)
- android中OptionMenu和ContextMenu创建
- 键盘输入缓存的清理
- Asp.Net Mvc 使用WebUploader 多图片上传
- 面试题5:替换空格
- Facebook Messenger crash . android.os.BadParcelableException: ClassNotFoundException when unmarshall
- 操作系统基础