Visitor パターンに関するすべてのドキュメントを読みましたが、まだかなり混乱しています。この例を別の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);