Связывание объекта с другими объектами и свойствами этих объектов - PullRequest
0 голосов
/ 10 марта 2010

Я ищу помощь в разработке некоторых функций в моем приложении. У меня уже есть что-то похожее, но эта проблема немного отличается.

Справочная информация:

В моем приложении у нас разные Модули. Данные в каждом модуле могут быть связаны с другими модулями. Каждый модуль представлен объектом в нашем приложении.

Модуль 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 есть свойство Category, я хочу связать экземпляр From данных с этим свойством.

Есть много форм. Если пользователи создают экземпляр Module2, им всегда может потребоваться иметь определенные формы, связанные с этим экземпляром Module2. Если они создают экземпляр Module2 и выбирают категорию 1, тогда я могу захотеть создать дополнительные формы.

Я прототипировал что-то вроде этого:

Форма FormLayout (содержит метки и элементы управления графическим интерфейсом) FormModule (связывает форму со всеми экземплярами модуля) Экземпляр формы (создайте экземпляр формы для заполнения)

Пока я думал об этом, я думал о создании новой таблицы FormModule / class / dao для каждого модуля и свойства, которые я добавляю. Так что я мог бы иметь:

FormModule1 FormModule1Property1 FormModule1Property2 FormModule1Property3 FormModule1Property4 FormModule2 FormModule3 FormModule3Property1

Тогда, как и раньше, я использовал фабрику, чтобы получить надлежащий DAO для решения всех этих проблем. Я бы передал ему массив идентификаторов, представляющих различные модули и свойства, и он вернул бы все DAO, которые мне нужно вызвать getForms (). Который, в свою очередь, вернул бы все формы для этого конкретного моста.

Некоторые баллы

  • Это будет для нового модуля, поэтому мне не нужно , чтобы расширить заводской код, который я предоставил. Я просто хотел показать пример того, что я сделал в прошлом.
  • Новый модуль может быть связан с: другими модулями (т. Е. Глобально для любого экземпляра данных этого модуля), другими свойствами модуля (т. Е. Только если экземпляр модуля имеет определенное значение в одном из своих свойств)
  • Я хочу, чтобы разработчики могли легко добавлять ассоциации с другими модулями и свойствами

Может ли кто-нибудь предложить какие-либо шаблоны проектирования или стратегии для достижения этой цели?

Если что-то неясно, пожалуйста, дайте мне знать.

Спасибо,

Al

1 Ответ

1 голос
/ 10 марта 2010

Вы можете использовать функцию впрыска зависимостей пружин. Это поможет вам добиться гибкости создания объектов с помощью файла конфигурации xml.

Итак, мое предложение было бы пойти с пружинами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...