【结构型】Composite模式
2016-05-25 16:14
435 查看
组合模式意在将对象组合成树形结构以表示部分与整体的层次结构关系,并且用户对单个对象的操作以有对组合对象的操作都是一致的。即:组合对象 is-a 单个对象,同时又可以组合着 n 个的单个对象(甚至于其他组合对象也可以)。当对一个组合对象执行某行为会被转化为对其所组合的 n 个对象进行操作。一个组合对象,又可被看作是一个大一些的、较简单单个对象稍微复杂些的单个对象,它也可以进一步被其他组合对象组合。类关系图参考如下:
Composite模式编码结构参考
namespace composite { class IComponent { public: virtual void action() {/*some code here........*/} virtual void add(IComponent* pComponent) {/*some code here........*/} virtual void remove(IComponent* pComponent) {/*some code here........*/} virtual IComponent* getComponent(/*...*/) { return nullptr; } // some code here........ };//class IComponent class Leaf : public IComponent {}; class Composite : public IComponent { public: virtual void action() { auto iter = _children.begin(); auto iterend = _children.end(); for (; iter != iterend; ++iter) { (*iter)->action(); } } virtual void add(IComponent* pComponent) { _children.push_back(pComponent); } virtual void remove(IComponent* pComponent) { auto iter = std::find(_children.begin(), _children.end(), pComponent); if (iter != _children.end()) { _children.erase(iter); } } virtual IComponent* getComponent(/*...*/) { /* some code here........ */} // some code here........ private: // declare children container typedef std::list<IComponent*> TChildList; // this is an example. TChildList _children; };//class Composite }//namespace composite
Composite模式编码结构参考
相关文章推荐
- 【OpenStack】源码级深入了解删除虚拟机操作
- linux下top命令的部分使用
- 分组聚集的K-means算法应用实例
- android 更新歌曲播放进度条seekbar的三种方法
- 【Arduino官方教程第一辑】示例程序 5-3 If条件判断
- jpeg图片接收显示测试上位机[串口 网络 摄像头上位机软件 开源]
- DNS正反解析、主从复制、子域授权、安全相关配置
- mount
- 2016.5.25——链表初始化及输出
- 探讨跨域请求资源的几种方式
- 清华差生10年奋斗经历
- adb logcat命令查看并过滤android输出log
- 让函数执行的各种方式
- TCP协议三次握手、四次挥手
- PhotoShop简单制作漂亮的格子背景
- CodeForces Round 352——Recycling Bottles & Robin Hood
- vnc使用
- mybatis 动态sql语句
- IP地址类
- OSX WebGoat Installation