访客模式和递归

时间:2009-04-08 17:49:58

标签: design-patterns visitor-pattern

在递归方案中使用访问者模式有什么好处吗?如果是这样,你能以编程方式展示它吗?

2 个答案:

答案 0 :(得分:2)

遍历二叉树怎么样?例如

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);
    }
  }
}

答案 1 :(得分:1)

我认为主要的好处是它只需要对1级深度的集合进行迭代。它可以回调,但至少accept()方法是干净的。