2011-02-26 2 views

Répondre

4

Soit votre problème nécessite un type particulier d'objets visitables ou vous essayez d'imposer trop de responsabilités sur votre modèle de visiteur. Si vous avez vraiment un objet significatif qui ne doit pas être visité, essayez le modèle Null Object.

public class NullElement implements Element { 

    public void accept(ElementVisitor visitor) { 
     // noop 
    } 
} 
+0

+1. Mieux que d'avoir chaque visiteur vérifier null. Bien sûr, un visiteur dont le travail consistait à compter les valeurs nulles ne fonctionnerait pas - mais vous pouvez trouver des moyens de contourner cela. –

1

Je ne vois aucune autre manière que mettre if (element != null) element.accept(visitor);

Si vous utilisez la goyave ou quelque chose, vous pourriez bien sûr faire une filter mais il semble comme un surpuissant.

+1

Ou si vous passez les éléments à la méthode 'visit()' du visiteur, il suffit de cocher 'null' comme première étape et de l'ignorer. –

Questions connexes