组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单一对象和组合对象的使用具有一致性。
当发现需求中是体现部分与整体层次的结构时,以及希望用户可以忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,就应该考虑用组合模式了。
#include <iostream>
#include <string>
#include <list>
using namespace std;
class Company
{
protected:
string m_name;
public:
Company( string name ) : m_name(name)
{}
virtual ~Company()
{}
virtual void Add( Company* c) = 0;
virtual void Remove( Company* c