2011-02-26 166 views

回答

4

要么你的问题需要一些特殊类型的可见对象,要么你试图对访客模式施加太多的责任。 如果您确实有一定不能访问的有意义的对象,请尝试空对象模式。

public class NullElement implements Element { 

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

+1。比每个访问者检查null都好。当然,一个工作是计算空值的访问者不会工作 - 但你可以找到解决办法。 – 2011-03-22 00:16:07

1

我看不到不是把一个if (element != null) element.accept(visitor);

如果您使用的番石榴或其他东西的任何方式,你当然可以做一个filter但似乎矫枉过正。

+1

或者,如果您将元素传递给访问者的'visit()'方法,那么首先检查'null'并跳过它。 – 2011-02-26 08:57:16

相关问题