典型的访问者基本上根据从accept(Object)开始的类型调度访问者。
想象一下在Collection接口上运行的访问者。
enum Visiting {
STOP
CONTINUE;
}
Visitor {
accept( Object );
Visiting visit( Object );
Visiting visit( Map );
Visiting visit( List );
Visiting visit( Set );
Visiting visit( Collection );
Visiting visit( ArrayList).
}
> ArrayList<在典型的访客中只会呼叫访问(列表)。调用visit(Object)有什么好处 - >访问(收藏) - >访问(列表) - >访问(ArrayList的)。如果有任何访问 返回Visiting.STOP未调用链中的下一个?
哪些可能的论据会使这个选择变得糟糕?
答案 0 :(得分:0)
如果任何访问返回Visiting.STOP,则不会调用链中的下一个链 ?
尝试使用责任链而不是访客。 您以错误的方式使用访问者,请参阅:http://en.wikipedia.org/wiki/Visitor_pattern