Я планирую начать новый проект с другом, и прежде чем углубиться в программирование, я пытаюсь определить основные технологии и определить правильную архитектуру для программного обеспечения.
Тип программного обеспечения, которое яЯ пытаюсь достичь имеет такую структуру:
Программное обеспечение будет разделено на модули.
Например:
Давайте представим, что у нас есть модуль "HR", который делаетматериал с моделью Employee.
Давайте представим, что у нас есть второй модуль "Fleet", который работает с моделью автомобиля.
Оба модуля могут использоваться независимо.Но что, если я хочу делать умные вещи между HR и Fleet?Идея состоит в том, чтобы создать «мост-модуль», который зависит от HR и Fleet и который реализует умные вещи, связанные с HR AND Fleet.
Зачем в бридж-модуль?Чтобы сохранить модульность!
Потому что я хочу иметь возможность использовать только HR, если я хочу, или только Fleet, если я хочу.Так что все должно оставаться в своем модуле.
Давайте вернемся к этим двум моделям (Сотрудник и Автомобиль) от HR и Fleet соответственно.
В мостовом модуле я хочу иметь возможностьнапример, расширить модель Employee, добавив некоторые поля, которые будут характерны для совместной работы HR и Fleet.
Например, поле Employee: company_car, которое будет внешним ключом для автомобиля.во флоте.
То, что я хочу:
- Класс, который я буду использовать для расширения Employee в мост-модуле, должен хранить новые поля в той же таблице, что и Employee из HR,Такое же поведение для автомобилей в бридж-модуле и во флоте.Это своего рода наследование одной таблицы.Но, кроме того, я хочу, чтобы они рассматривались как ЖЕ модель, независимо от названия класса.Действительно, Сотрудник из Bridge-Module и Сотрудник из HR будут одинаковыми!Дело в том, что мы просто добавляем в него некоторые поля.
Я искал, но не нашел ORM, который ведет себя так.Это своего рода наследование одной таблицы, но я добавляю тот факт, что он должен учитывать, что это та же модель.
Существует ли ORM или даже инфраструктура MVC, которая ведет себя так?
Я буду рад уточнить, если все не ясно.
Заранее спасибо,
lbris.