我有一个图表和一组非常简单的访问者,他们对图表的顶点/边进行一些计算,比如获得边的总权重并漂亮地打印图表。
例如,我想更进一步,让访问者以DFS的方式访问图表。
然而,我认为访问者模式应该与遍历机制分开,遍历方法应该使用其他模式创建,比如迭代器。我说得对吗?还是我漏掉了什么?
发布于 2012-10-22 18:46:52
正如评论所说,Visitor本身并不关心遍历机制。这是由迭代器或其他一些具体的遍历方法决定的工作。
如果你有一个迭代器,访问者并不是“不需要的”。这取决于您要应用于迭代项的操作的复杂程度。
访问者在逻辑上是现有对象的扩展,而不改变它们的实现。因此,它的目的是封装这个扩展,以便重用和进一步扩展。
如果您有一个Iterator和一个想要应用于所有元素的简单操作,那么就不需要Visitor了。
https://stackoverflow.com/questions/11667295
复制相似问题