padrão do visitante e recursão
-
06-09-2019 - |
Pergunta
Existe alguma vantagem para o uso padrão do visitante em um cenário de recursiva? Se assim você pode demonstrar isso programaticamente?
Solução
Que tal atravessar uma árvore binária? por exemplo.
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);
}
}
}
Outras dicas
Eu acho que o principal benefício é que ele requer apenas iterações mais de coleções 1 nível de profundidade. Ele pode ligar de volta, mas pelo menos o accept () método será limpo.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow