Объяснение шаблона посетителя

Итак, я прочитал всю документацию по шаблону Посетитель и все еще сильно запутался. Я взял этот пример из другого вопроса SO, может ли кто-нибудь помочь мне понять? Например, когда мы используем шаблон проектирования посетителей? Я думаю, что я, возможно, понял кое-что из этого, но я просто не в состоянии увидеть общую картину. Как узнать, когда я смогу его использовать?

class equipmentVisited
{
  virtual void accept(equipmentVisitor* visitor) = 0;
}

class floppyDisk : public equipmentVisited
{
  virtual void accept(equipmentVisitor* visitor);
}

class processor : public equipmentVisited
{
  virtual void accept(equipmentVisitor* visitor);
}

class computer : public equipmentVisited
{
  virtual void accept(equipmentVisitor* visitor);
}

class equipmentVisitor
{
  virtual void visitFloppyDisk(floppyDisk* );
  virtual void visitProcessor(processor* );
  virtual void visitComputer(computer* );
}

// Some additional classes inheriting from equipmentVisitor would be here

equipmentVisited* visited;
equipmentVisitor* visitor;

// Here you initialise visited and visitor in any convenient way

visited->accept(visitor);
25
задан Dave Schweisguth 14 February 2016 в 00:01
поделиться