6

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

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

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

4

1 回答 1

4

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

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

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

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

于 2012-10-22T10:46:52.093 回答