代码之家  ›  专栏  ›  技术社区  ›  Allan

将对象与其他对象和这些对象的属性相关联

  •  0
  • Allan  · 技术社区  · 14 年前

    我正在寻找一些帮助来设计我的应用程序中的一些功能。我已经有类似的设计,但这个问题有点不同。

    背景:

    在我的应用程序中,我们有不同的模块。每个模块中的数据可以关联到其他模块。在我们的应用程序中,每个模块都由一个对象表示。

    模块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值时)

    有人能提出一些设计模式或策略来实现这个目标吗?

    如果有什么不清楚的,请告诉我。

    艾尔

    1 回复  |  直到 14 年前
        1
  •  1
  •   Mohd Farid    14 年前

    可以使用弹簧依赖项注入功能。这将帮助您实现使用xml配置文件实例化对象的灵活性。

    所以,我的建议是用弹簧。