我一直被困在我设计的这个特定部分,我想要一些关于我应该如何处理它的意见。我的计划由课程LeerTrajecten
和元素组成Elementen
。这两个对象可以独立存在,但也可以将元素添加到课程中。
Element
本身是对象的抽象超类,如Document
,Casus
等。
(1) 当一个元素添加到课程中时,会创建一个课程元素LeerTrajectenElement
,其中包含TrajectCode
, ElementCode
,一个由前两个字段和一些其他数据 ( DisplayNaam
, DisplayOmschrijving
) 组成的自己的唯一代码。
在 GUI (Spring) 中,有几个选项卡 ( JTabbedPane
) 专门用于管理这些课程和元素。每个选项卡都有一个概述和一个详细信息面板。在此概述中,有一个JTable
显示每个现有的Element
或Traject
.
这只是一种将程序置于透视图 ( LeerTrajectElement
) 并显示可能同时存在多个JTable
活动但在不同选项卡上的方式。
(2) 我也有经理,他们的唯一目的是管理他们各自的对象(LeerTrajectManager
manages LeerTraject
,ElementManager
managesElement
等)。这些管理器是众所周知的,Domeincontroller
它们充当整个域的通用外观。来自 GUI 的请求被发送到此DomeinController
,如果请求是针对经理的,则该请求将发送到正确的请求。
这是我的程序的基本大纲,我将包括一些图表作为视觉辅助。
(1)
(2)
我希望我已经提供了有关项目当前设置的足够信息。出于某种原因,我的模型显示不正确,但DomeinController
包含 3 个管理器(它未显示在概述中,但关联存在)。
如图 2 所示,每个经理都持有一个 tableModel。TableModel 的定义如下:
MyAbstractTableModel
扩展AbstractTableModel
并提供基本实现,因此特定实现可以从此类派生,同时仅提供非常基本的需求。
这就是我们要达到的重点:目前每个经理都有自己的 tableModel,我们(老师)决定我们应该把它抽象成一个经理。我一直在为此做一个实现,但我觉得我有一些根本性的错误:这些 tableModel 可以为几个不同的目的生成:要么你想要所有元素,要么你想要所有元素链接到课程,或者你想要链接到特定课程的所有元素等。
为了获得这样的东西,我尝试创建两种getTableModel
方法。第一个仅将枚举 { LEERTRAJECT
, ELEMENT
, LEERTRAJECTELEMENT
} 作为参数,而第二个将附加List<E>
参数作为参数。这样做可以让我一般地将数据添加到请求中,这些数据可以由适当的管理器早些时候收集(因此只将结果集数据发送到TableModelManager
.
这种方法最终Switch
在我的每个方法中都有很多语句,TableModelManager
以确定它应该发生什么以及应该使用什么 tableModel。代码变得非常不干净,所以我想这可能不是我想要的样子。
至于为什么我们首先要引入经理:显然我们的 tableModels 现在与我们各自的经理硬链接,我们应该尽量避免这种情况。
所以,总而言之:我有几个经理,他们都拿着一个TableModel
来显示他们各自的数据。我想通过将电流保存TableModel
在 a 中来集中它TableModelManager
并通过这个对象生成表模型。其他经理会简单地持有参考TableModelManager
并告诉他数据已更改或要求适当的模型。
我应该如何处理这个?
PS:我意识到这更像是一个设计问题,所以如果我应该把它放在 stackexchange 网络上的不同站点,请告诉我,我会删除它。
PPS:对于非英文部分我很抱歉,我的队友拒绝只使用英文。