Элемент с подэлементами
От: sax0n Украина  
Дата: 25.11.10 13:01
Оценка:
привет.
есть некий интерфейс IElement. В иерархии есть класс IGroup, который имеет все свойства интерфейса IElement, но отличается лишь тем, что может внутри хранить другие элементы и группы (некое дерево).

вопрос в том, какой паттерн используется для работы с такой иерархией?

class IElement
{
public:
  virtual std::string GetName() = 0;
  virtual void Export() = 0;
};

class IGroup: public IElement
{
public:
  virtual std::string GetName() = 0;
  virtual void Export() = 0;
};

class Group: IGroup
{
public:
  virtual std::string GetName(){ return ""; }
  virtual void Export(){}
private:
  std::vector< IElement > m_children;
};


Как это описать так, чтобы с одной стороны я всегда знал, какой тип у m_children[i], и с другой стороны мог работать с группой, как с элементом?
Пока в голову пришел только Посетитель (GoF): создать итератор на основе посетителя всей иерархии.
есть какие-то стандартные приемы, примеры?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.