设计模式之九------compositer(组合)
来源:互联网 发布:工单提交系统源码php 编辑:程序博客网 时间:2024/05/21 10:09
问题:
我们想以一种统一的方式管理整体和局部关系;就像一个班级,班里的所有人抽象为People类,类中有一般的方法和管理的方法,一般的同学继承为Student,实现一般的方法,班长则需要实现一般的方法和管理的方法;管理的方法用于管理所有的其他人。我们只要用people就可以管理整个班级了;
解决方案:
将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和使用具有一致性。
源代码:
#include <iostream>
#include <VECTOR>
using namespace std;
class Component
{
public:
Component(){}
~Component(){}
virtual void Operator()=0;
virtual void Add(Component* com){}
virtual void Remove(Component* com){}
virtual Component *GetChild(int index){return NULL;}
private:
};
class Leaf:public Component{
public:
Leaf(){};
~Leaf(){};
virtual void Operator()
{
cout<<"Leaf Operator"<<endl;
}
};
class Composite:public Component{
public:
Composite(){}
~Composite()
{
//删除指针内存
}
virtual void Operator()
{
vector<Component*>::iterator ite=com.begin();
while(ite!=com.end())
{
(*ite)->Operator();
ite++;
}
}
virtual void Add(Component* com)
{
this->com.push_back(com);
}
virtual void Remove(Component* com)
{
this->com.erase(&com);
}
virtual Component *GetChild(int index)
{
return com[index];
}
private:
vector<Component*> com;
};
void main()
{
Leaf *l=new Leaf;
Leaf *p=new Leaf;
Component *com=new Composite;
com->Add(l);
com->Add(p);
com->Operator();
}
- 设计模式之九------compositer(组合)
- 设计模式(九) 组合模式
- 设计模式(九)---组合模式
- 设计模式学习(九):组合模式
- 设计模式笔记九:组合模式
- 设计模式(九)组合模式
- 设计模式之组合
- 设计模式之组合
- 设计模式 之 组合
- 设计模式之组合
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之--组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- hdu 4430 Yukari's Birthday
- 汉英口语存在的问题及对策
- Java maximum memory on Windows XP
- 常见的Hash函数
- 编码问题一网打尽
- 设计模式之九------compositer(组合)
- Java webstart max-heap-size causes JVM cannot be started
- 在ORACLE里按用户名重建索引的方法
- GCD介绍(一): 基本概念和Dispatch Queue
- 查找程序所在上一级目录中是否存在指定文件夹,不存在就建立,并在其中新建一个txt文件
- 让TextView 自带滚动条
- 向上提升
- 文件上传遇到的问题
- 忘记了转身,忘记了遗忘 伤感心情日志