0

我一直被困在我设计的这个特定部分,我想要一些关于我应该如何处理它的意见。我的计划由课程LeerTrajecten和元素组成Elementen。这两个对象可以独立存在,但也可以将元素添加到课程中。 Element本身是对象的抽象超类,如Document,Casus等。

(1) 当一个元素添加到课程中时,会创建一个课程元素LeerTrajectenElement,其中包含TrajectCode, ElementCode,一个由前两个字段和一些其他数据 ( DisplayNaam, DisplayOmschrijving) 组成的自己的唯一代码。

在 GUI (Spring) 中,有几个选项卡 ( JTabbedPane) 专门用于管理这些课程和元素。每个选项卡都有一个概述和一个详细信息面板。在此概述中,有一个JTable显示每个现有的ElementTraject.

这只是一种将程序置于透视图 ( LeerTrajectElement) 并显示可能同时存在多个JTable活动但在不同选项卡上的方式。

(2) 我也有经理,他们的唯一目的是管理他们各自的对象(LeerTrajectManagermanages LeerTrajectElementManagermanagesElement等)。这些管理器是众所周知的,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:对于非英文部分我很抱歉,我的队友拒绝只使用英文。

4

1 回答 1

1

没有详细分析,

  • 您可以enum通过让每个元素实现一个通用接口来影响策略模式,从而挽救您的方法,如此所述。

  • 作为使用管理器的具体示例,此TestTable使用 的实例MyObjectManager来管理 中的每行一个单选按钮JTable

于 2013-03-06T15:55:46.990 回答