2011-02-26 167 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

相關問題