博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式[14]-Composite
阅读量:6715 次
发布时间:2019-06-25

本文共 1388 字,大约阅读时间需要 4 分钟。

Type: Structural Composite: 通过递归手段来构造诸如文件系统之类的树形的对象结构;Composite模式所代表的数据构造是一群具有统一接口界面的对象集合,并可以通过一个对象来访问所有的对象(遍历)。

#include 
#include
#include
using namespace std;class Component{public: virtual void operation()=0; virtual void add(Component* c){}; virtual void remove(Component* c){}; virtual Component* getChild(int i){};};class Leaf: public Component{public: void operation() { cout<<"Leaf"<
::iterator it; for(it = mChildren.begin(); it < mChildren.end(); it++) if(*it == c) { mChildren.erase(it); break; } }; Component* getChild(int i) { if(i < 0 || i >= mChildren.size()) return NULL; return mChildren[i]; };private: vector
mChildren;};void printComponent(Component* pComponent){ pComponent->operation(); if(!dynamic_cast
(pComponent)) return; int i=0; Component* childComponent; while(childComponent = pComponent->getChild(i++)) { printComponent(childComponent); };};int main(){ Leaf *pLeaf1 = new Leaf(); Leaf *pLeaf2 = new Leaf(); Composite* pComposite = new Composite; pComposite->add(pLeaf1); pComposite->add(pLeaf2); Composite* pComposite2 = new Composite; pComposite2->add(pComposite); printComponent(pComposite2); system("pause"); return 0;}

转载地址:http://tarlo.baihongyu.com/

你可能感兴趣的文章
SSH 命令行参数详解【英】
查看>>
前端技术学习之选择器(四)
查看>>
2016年4月4日中项作业
查看>>
log4j配置
查看>>
centos备份与还原
查看>>
fixed 兼容ie6
查看>>
条件+努力=?
查看>>
hadoop常用服务管理命令
查看>>
洛谷P4169 天使玩偶 (算竞进阶习题)
查看>>
Order By操作
查看>>
(三)mybatis之对Hibernate初了解
查看>>
nginx安装与配置
查看>>
Android 命令设置获取、IP地址、网关、dns
查看>>
查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by...
查看>>
[SQL in Azure] Windows Azure Virtual Machine Readiness and Capacity Assessment
查看>>
关于CCR测评器的自定义校验器(Special Judge)
查看>>
java设计模式之 装饰器模式
查看>>
利息力(force of interest)
查看>>
Oracle 角色及其权限
查看>>
NiftyDialogEffects:集成了多种动画效果的Dialog控件
查看>>