Шаблон посетителя и рекурсия
-
06-09-2019 - |
Вопрос
Есть ли какое-либо преимущество в использовании шаблона посетителя в рекурсивном сценарии?Если да, можете ли вы продемонстрировать это программно?
Решение
Как насчет обхода двоичного дерева?например
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 уровень.Он может выполнить обратный вызов, но, по крайней мере, метод Accept() будет чистым.
Не связан с StackOverflow