我在尋找一個乾淨的模式來解決以下問題:創建通用GUI的幾個子類
我有幾個類型的車輛(比方說汽車,自行車和汽車,所有這些類擴展抽象類的交通工具) 。每種類型的車輛都有幾個特定的屬性。
我有一個地方的車輛列表,我需要建立一個GUI,使用戶能夠選擇一輛車,並編輯它的屬性。我想實現的結果是在左側顯示車輛列表(使用JList),右側顯示包含編輯所選車輛所需字段的面板。
我知道如何做到這一點,當列表只包含一種類型的項目(我使用左邊的Jlist和右邊的自定義JPanel)。我爲每個子類製作了一個自定義面板:CarPanel,BikePanel ... 我的問題是所選車輛類型與相應面板之間的鏈接。雖然它會工作,我想避免這樣的事情:
if (selectedVehicle instanceof Car) {
useThisPanel(new CarPanel((Car)selectedVehicle));
} ...
因爲它不似乎很容易維護我。
我也想避免像useThisPanel(selectedVehicle.getPanel())
因爲沒有任何理由車輛類別應該瞭解它顯示
我目前正在對我的代碼切換到MVC模式的方式什麼,但似乎對我來說這不足以解決我的問題。
我很確定我不是第一個面對這個問題的人,但我找不到任何答案或建議來管理這種情況。
使用反射來獲取字段名稱和類型。 – 2013-05-13 16:05:04