سؤال

هل هناك أي ميزة لاستخدام نمط الزائر في سيناريو متكرر؟ إذا كان الأمر كذلك، فهل يمكنك إثبات ذلك برمجيا؟

هل كانت مفيدة؟

المحلول

ماذا عن اجتياز شجرة ثنائية؟ على سبيل المثال

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top