Я ищу помощь в разработке некоторых функций в моем приложении. У меня уже есть что-то похожее, но эта проблема немного отличается.
Справочная информация:
В моем приложении у нас разные Модули. Данные в каждом модуле могут быть связаны с другими модулями. Каждый модуль представлен объектом в нашем приложении.
Модуль 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