早上好stackoverflow,
我目前正在实现类似AST的访问模式。 现在我的问题是,如何迭代这些元素?
我认为将对象返回给访问者并让访问者从那里进行遍历更合乎逻辑。因为你要保持灵活性,当你想以不同的方式遍历对象时。
另一方面可以说,访客不应该关注对象的结构。因此,如果对象发生变化,您也不必更改访问者。
是否有任何一般性的建议如何解决这个问题?我有两本关于访客模式的书,但两本都没有处理如何处理更复杂节点的问题。
Regads toebs
答案 0 :(得分:1)
树形结构看起来非常简单。节点中的accept
方法可能如下所示:
void accept(Visitor visitor) {
visitor.visitMyTypeOfNode(this);
for each child {
child.accept(visitor);
}
}
显然,您需要考虑这在您的应用程序的整体架构中是否有意义。