Паттерн: Посетитель (Visitor)
Фрагмент: Visitor [C++]
  1. class Visitor {
  2. public:
  3. virtual void VisitElementA(ElementA*);
  4. virtual void VisitElementB(Elements*);
  5.  
  6. // и так далее для остальных конкретных элементов
  7. protected:
  8. Visitor() ;
  9. };