Pregunta

¿Hay alguna ventaja para el uso de patrón de visitante en un escenario recursiva? Si es así se puede demostrar mediante programación?

¿Fue útil?

Solución

¿Qué hay de recorrer un árbol binario? p.ej.

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

Otros consejos

Creo que el principal beneficio es que sólo requiere de iteraciones más de 1 colecciones nivel de profundidad. Se puede devolver la llamada, pero al menos el aceptar () método será limpio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top