访客模式和遍历机制

H.J*_*sef 5 design-patterns graph visitor-pattern

我有一个图形和一组非常简单的访问者,它们对图形的顶点/边缘进行一些计算,例如获得边缘的总重量和漂亮的图形打印.

我想更进一步,让访问者以DFS方式访问图表.

但是,我认为访问者模式应该与遍历机制分开,并且应该使用其他模式(如迭代器)创建遍历方法.我纠正还是错过了什么?

And*_*sen 4

正如评论所说,访问者并不关心遍历机制本身。这是由迭代器或其他具体遍历方法来决定的工作。

如果您有迭代器,则访问者并不是“不需要”的。这取决于您想要应用于正在迭代的项目的操作的复杂性。

访问者在逻辑上是现有对象的扩展,而不改变其实现。因此它的目的就是封装这个扩展以供重用和进一步扩展。

如果您有一个迭代器和一个想要应用于所有元素的简单操作,那么就不需要访问者。