组合(Composite)模式的定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。
#include <QCoreApplication>
#include <iostream>
#include <list>
using namespace std;
class Component{
public:
virtual void process()=0;
};
//树节点
class Composite:public Component{
public:
Composite(const string& s):name(s){}
void add(Component* element){
elements.push_back(element);
}
void remove(Component* element){
elements.remove(element);
}
void process(){
//1.process current node
cout<<"Composite process"<<endl;
//2.process leaf node1
for(auto& e:elements){
e->process();//多态
}
}
private:
string na