访客模式:遍历客户或访客中的树元素

时间:2013-11-18 09:41:20

标签: visitor-pattern

早上好stackoverflow,

我目前正在实现类似AST的访问模式。 现在我的问题是,如何迭代这些元素?

我认为将对象返回给访问者并让访问者从那里进行遍历更合乎逻辑。因为你要保持灵活性,当你想以不同的方式遍历对象时。

另一方面可以说,访客不应该关注对象的结构。因此,如果对象发生变化,您也不必更改访问者。

是否有任何一般性的建议如何解决这个问题?我有两本关于访客模式的书,但两本都没有处理如何处理更复杂节点的问题。

Regads toebs

1 个答案:

答案 0 :(得分:1)

树形结构看起来非常简单。节点中的accept方法可能如下所示:

void accept(Visitor visitor) {
    visitor.visitMyTypeOfNode(this);
    for each child {
        child.accept(visitor);
    }
}

显然,您需要考虑这在您的应用程序的整体架构中是否有意义。