نمط الزائر والمصاعدة
-
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 مستوى عميق. يمكن أن نتصل مرة أخرى، ولكن على الأقل طريقة قبول () ستكون نظيفة.
لا تنتمي إلى StackOverflow