Паттерн: Посетитель (Visitor)
Фрагмент: составной элемент [C++]
  1. class CompositeElement : public Element {
  2. public:
  3. virtual void Accept(Visitors);
  4. private:
  5. List<Element*>* _children;
  6. };
  7. void CompositeElement::Accept (Visitors v) {
  8. ListIterator<Element*> i(_children);
  9. for (i.First(); !i.IsDone(); i.Next() {
  10. i .Currentltem()->Accept(v) ;
  11. }
  12. v.VisitCompositeElement(this);
  13. }