组合模式
将对象组合成树形结构以表示整体-部分的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
http://blog.163.com/zhoumhan_0351/blog/static/39954227201042884015161/
class Composite;
class Component{
Component(){}
Operation(){}
Add(Component* component){}
Remove(Component* component){}
//...
virtual Composite* GetComposite(){return 0;}
};
class leaf:public Component{
//...
}
class Composite:public Component{
//...
//用GetComposite方法来判断返回类型,如果是Composite类型,则可执行Add,Remove等相关操作
//如果是叶子,则返回,不可以执行Add,Remove等相关操作。
Composite* GetComposite(){return this;}
}