访客模式和遍历机制

时间:2012-07-26 10:23:16

标签: design-patterns graph visitor-pattern

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

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

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

1 个答案:

答案 0 :(得分:4)

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

如果您有迭代器,访客不会“不需要”。这取决于您要应用于正在迭代的项目的操作的复杂性。

访客在逻辑上是现有对象的扩展,而不会更改其实现。因此,其目的是封装此扩展以供重用和进一步扩展。

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