2013-03-06 42 views
0

我一直被困在設計的這個特定部分,我想要一些關於如何處理它的輸入。我的課程包括課程LeerTrajecten和元素Elementen。這兩個對象都可以獨立存在,但元素也可以添加到課程中。 Element在本身就像DocumentCasus對象的抽象超等通過將多個表模型提取到單個TableModelManager來改進設計

(1) 當元件被添加到過程中,一個療程元件LeerTrajectenElement是創建含有TrajectCodeElementCode,自身由前兩個字段和一些其他數據組成的唯一代碼(DisplayNaam,DisplayOmschrijving)。

在GUI(Spring)中,有幾個專用於管理這些課程和元素的選項卡(JTabbedPane)。每個選項卡都有一個概覽和一個詳細信息面板。在此概覽中,有一個JTable可顯示每個現有的ElementTraject

這僅僅是作爲一種將程序置於透視中(LeerTrajectElement)的方式,並顯示可能有多個JTable同時處於活動狀態,但在不同的選項卡上。

(2) 我也得到了管理人員,其唯一目的是管理其各自的對象(LeerTrajectManager管理LeerTrajectElementManager管理Element等)。這些管理人員被稱爲Domeincontroller,這是整個域的一般外觀。來自GUI的請求被髮送到DomeinController,該請求將請求發送給正確的請求(如果它是用於管理器的話)。

這是我的程序的基本輪廓,我將包括一些圖作爲視覺輔助。

(1) enter image description here

(2)enter image description here

我希望我已經提供了關於該項目的當前設置足夠的信息。 出於某種原因,我的模型顯示不正確,但DomeinController包含3個管理器(它在概述中未顯示,但關聯存在)。

正如你在圖2中看到的,每個經理都擁有一個tableModel。 TableModels的定義是這樣的:

enter image description here

MyAbstractTableModel延伸AbstractTableModel並提供基本實現,以便具體實現可以從這個類派生的,而只有提供很基本的需求。

這就是我們要做到的地方: 當前每個經理都有自己的tableModel,我們(老師)決定我們應該把這個抽象成一個經理。我一直在爲此實現一個實現,但是我覺得我有一些fundemental錯誤:這些tableModels可以爲幾個不同的目的生成:要麼所有元素,要麼所有元素鏈接到 a當然,或者你想創建兩個getTableModel方法鏈接到特定當然所有元素,等等等等

爲了獲得這樣的事情,我已經試過。第一種只用了一個枚舉{LEERTRAJECTELEMENTLEERTRAJECTELEMENT}作爲參數,而第二個採取了附加的List<E>作爲參數。這樣做將使我一般數據添加到請求,這可能會提前通過適當的管理來收集(因此只有結果集的數據發送到TableModelManager數據。

這種方式結束了一個很大的Switch報表每方法在我的TableModelManager中,以確定它應該發生什麼,以及應該使用什麼tableModel。代碼變得非常不潔,所以我認爲這可能不是我想要的方式。

至於爲什麼我們應該引入經理在首位:appearantly我們tableModels現在硬鏈接到我們各自的管理人員,我們應該儘量避免這種

所以,總而言之:我有幾個經理,他們都持有TableModel來顯示他們各自的數據。我想通過將當前的TableModel保存在TableModelManager中來集中這一點,並通過此對象生成表模型。其他經理只會提及TableModelManager,並告訴他數據已更改或要求提供適當的型號。

我該如何解決這個問題?

PS:我知道這是更多的是設計問題,所以如果我應該把這個在stackexchange網絡上不同的網站只是讓我知道,我會刪除此。

PPS:我對非英語部分很抱歉,我的隊友們拒絕只用英語。

回答

1

缺席了詳細的分析,

  • 您可以通過讓每個元素實現共同的接口以實現strategy pattern,作爲oulined here挽救你的enum方法。

  • 作爲使用管理器的具體示例,此TestTable使用MyObjectManager的實例來管理JTable中每行的一個單選按鈕。

+0

謝謝你,我肯定會看看這個! – 2013-03-06 16:05:18

+0

不客氣;請花時間審查並將您的發現呈現給您的團隊。作爲參考,這個非常簡單的[示例](http://stackoverflow.com/a/8260663/230513)顯示'setModel()'允許'JTable'顯示任何(有效的)'TableModel'。 – trashgod 2013-03-06 18:52:15