在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
/********************************* *设计模式--组成模式实现 *C++语言 *Author:WangYong *Blog:http://www.cnblogs.com/newwy ********************************/ #include <iostream> #include <vector> using namespace std; class Component { public: Component(){} ~Component(){} virtual void Operation() = 0; virtual void Add(const Component &){} virtual void Remove(const Component&){} virtual Component *GetChild(int){return 0;} }; class Composite:public Component { public: Composite(){vector<Component*>::iterator itend = comVec.begin();} ~Composite(){} void Operation() { vector<Component*>::iterator comIter = comVec.begin(); for(;comIter != comVec.end(); comIter++) { (*comIter)->Operation(); } } void Add(Component *com){comVec.push_back(com);} void Remove(Component *com){comVec.erase(&com);} Component * GetChild(int index){return comVec[index];} private: vector<Component*> comVec; }; class Leaf:public Component { public: Leaf(){} ~Leaf(){} void Operation(){cout<<"Leaf operation.."<<endl;} }; int main() { Leaf *l = new Leaf(); l->Operation(); Composite *com = new Composite(); com->Add(l); com->Operation(); Component *ll = com->GetChild(0); ll->Operation(); return 0; } |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论