在递归场景中使用访问者模式有什么优势吗?如果有的话,你能编写程序进行演示吗?
private class NodeVisitor{
public void visit(VisitableNode<T> node){
if (node!=null) {
print node.data;
}
}
}
public class VisitableTree<T> {
private VisitableNode<T> root;
public void printNodes(){
new NodeVisitor.visit(root);
}
private class VisitableNode<T> {
T data;
VisitableNode<T> left;
VisitableNode<T> right;
public void visit(NodeVisitor<T> visitor){
..do something
visitor.visit(left);
visitor.visit(right);
}
}
}
NodeVisitor.visit
不应该调用node.visit(this)
吗?然后VisitableNode.visit
应该调用left.visit(visitor)
,但那只是一层间接性。此外,这个答案并没有展示出访问者模式的优势。 - lucidbrot