2010-02-01 229 views
0

我有一些代碼在模型中包含了一些類,如(vb.net僞代碼,但可以是任何面向對象的語言):避免子類型選擇

Enum AttributeType 
    Boolean 
    Date 
    String 
End Enum 

MustInherit Class Attibute 
    Must Override Function Type As AttributeType 
End Class 

Class BooleanAttribute: Attribute 
    Function Type As AttributeType 
     Return AttributeType.Boolean 
    End Function 
End Class 

而且視圖包含像一些代碼:

Select Case AttributeType 
    Case Boolean 
     //Display checkbox control 
    Case Date 
     //Display date picker control 
    Case String 
     //Display textbox control 
End Select 

我真的不喜歡在視圖中的代碼,對希望顯而易見的原因 (當我得到一個新的屬性類型等發生了什麼)。我的問題是,我應該如何替換 呢?

我可以很容易地添加一個方法到具體的類,但是用UI的東西污染 模型,所以這是一個可怕的想法。

我可以將選擇移入工廠,但似乎只是隱藏了 問題。

任何人都可以建議一個更好的方法嗎?

回答

0

如果這是一個單一的Case語句,我會保持原樣。

如果它是多次完成的事情,您可以創建一個輔助方法,您可以在所有控件中發送該輔助方法,並且輔助方法將正確的控件設置爲可見。

您也可以對每個屬性類型執行一次,這可能會減少添加新屬性類型時所需的工作量。