我正在寻找一些帮助,在我的应用程序中设计一些功能。我已经设计了类似的东西,但这个问题有点不同。
背景
在我的应用程序中,我们有不同的模块。每个模块中的数据可以与其他模块相关联。每个模块在我们的应用程序中由一个Object表示。
模块1可以与模块2和模块3相关联。目前我使用工厂提供适当的DAO来获取和保存这些数据。
它看起来像这样:
class Module1Factory {
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接口并提供通用功能。
新发展
我们正在添加一个新模块,该模块能够与其他模块以及该模块的特定属性相关联。该模块基本上为用户提供了将自定义表单添加到其他模块的功能。这样他们就可以收集更多信息以及我们提供的信息。
我想开始将我的Form模块与其他模块及其属性相关联。即如果Module1具有属性类别,我想将实例从数据与该属性相关联。
有很多表格。如果用户创建Module2的实例,他们可能总是希望还将某些表单附加到该Module2实例。如果他们创建了Module2的实例并选择了Category 1,那么我可能想要创建其他Form。
我做了这样的原型:
表 FormLayout(包含标签和gui控件) FormModule(将表单与模块的所有实例相关联) 表单实例(创建要填写的表单的实例)
正如我想的那样,我正在考虑为我添加的每个模块和属性创建一个新的FormModule表/ class / dao。所以我可能会:
FormModule1 FormModule1Property1 FormModule1Property2 FormModule1Property3 FormModule1Property4 FormModule2 FormModule3 FormModule3Property1
然后正如我之前所做的那样,我会使用工厂来获得适当的DAO以处理所有这些问题。我会给它一个代表不同模块和属性的id数组,它会返回我需要调用getForms()的所有DAO。反过来,它将返回该特定桥的所有形式。
一些要点
任何人都可以建议任何设计模式或策略来实现这一目标吗?
如果有任何不清楚的地方,请告诉我。
谢谢,
Al
答案 0 :(得分:1)
您可以使用弹簧依赖注入功能。这将有助于您实现使用xml配置文件实例化对象的灵活性。
所以,我的建议是和Springs一起去。