我正在寻找一些帮助来设计我的应用程序中的一些功能。我已经有类似的设计,但这个问题有点不同。
背景:
在我的应用程序中,我们有不同的模块。每个模块中的数据可以关联到其他模块。在我们的应用程序中,每个模块都由一个对象表示。
模块1可以与模块2和模块3相关联。目前我使用一个工厂来提供适当的DAO来获取和保存这些数据。
看起来像这样:
类模块1工厂{
public static Module1BridgeDAO createModule1BridgeDAO(int moduleid) {
switch (moduleId)
{
case Module.Module2Id: return new Module1_Module2DAO();
case Module.Module3Id: return new Module1_Module3DAO();
default: return null;
}
}
Module1_Module2和Module1_Module3实现相同的BridgeModule接口。在数据库中,每个模块(Module1、Module2、Module3)都有一个表。我还为每个模块(它们是多对多)提供了一个桥接表Module1_Module2、Module1_Module3等。
DAO基本上处理管理关联和检索调用模块自身实例数据所需的所有代码。现在,当我们添加与Module1相关联的新模块时,我们只需实现ModuleBridge接口并提供通用功能。
我们正在添加一个新模块,它将能够与其他模块以及该模块的特定属性相关联。该模块基本上为用户提供了向其他模块添加自定义表单的能力。这样他们就可以收集我们提供的额外信息。
我想开始将表单模块与其他模块及其属性关联起来。Ie如果Module1有一个属性类别,我想将数据中的一个实例与该属性相关联。
有很多形式。如果用户创建Module2的实例,他们可能总是希望将某些表单附加到该Module2实例。如果他们创建一个Module2实例并选择Category 1,那么我可能需要创建其他表单。
形式
FormLayout(包含标签和gui控件)
form module(将窗体与模块的所有实例关联)
表单实例(创建要填写的表单实例)
当我想到它时,我正在考虑为我添加的每个模块和属性创建一个新的FormModule table/class/dao。所以我可能会:
窗体模块1
窗体模块1属性2
窗体模块1属性3
窗体模块2
窗体模块3
窗体模块3属性1
然后,正如我之前所做的,我会使用一个工厂来获得处理所有这些问题的正确刀。我会给它一个表示不同模块和属性的id数组,它会返回我需要调用getForms()的所有dao。这将反过来返回该桥的所有表格。
一些要点
-
这将是一个新的模块,所以我不
需要
以扩展我提供的工厂代码。我只是想展示一下我过去做过的事情。
-
新模块可以与以下模块关联:其他模块(即该模块数据的任何实例的全局)、其他模块属性(即仅当该模块实例的某个属性中包含certian值时)
-
有人能提出一些设计模式或策略来实现这个目标吗?
如果有什么不清楚的,请告诉我。
艾尔