组合设计模式,就是可以把多个类组合在一个大类中,形成一个树形结构。
#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; }
运行:
Composite Design Pattern 组合设计模式
时间: 2024-10-11 01:56:59