我有一个图表和一组非常简单的访问者,可以对图表的顶点/边缘进行一些计算,例如获取边缘的总重量并漂亮地打印图形。
我想更进一步,让访问者以DFS方式访问图表。
但是,我认为访问者模式应该与遍历机制分开,并且应该使用其他模式(如迭代器)创建遍历方法。我纠正还是错过了什么?
答案 0 :(得分:4)
正如评论所说,访客并不关心遍历机制。这是迭代器或其他一些具体遍历方法的工作来决定。
如果您有迭代器,访客不会“不需要”。这取决于您要应用于正在迭代的项目的操作的复杂性。
访客在逻辑上是现有对象的扩展,而不会更改其实现。因此,其目的是封装此扩展以供重用和进一步扩展。
如果您有一个迭代器和一个简单的操作要应用于所有元素,那么就不需要访问者。