Точка создания и инициализации конкретики приложения
От: zelenprog  
Дата: 08.05.24 09:04
Оценка:
Добрый день!

Стараюсь сделать программу по архитектуре, которая описана в этой статье:
https://habr.com/ru/companies/rosbank/articles/559116/

Вот картинка из нее:


Вроде бы все логично.
Программный код разбил на модули в соответствии со статьей.
Объекты в каком-либо слое содержат ссылки на соответствующие интерфейсы из других слоев.

Осталось только все нужные объекты создать при запуске и инициализировать.
При запуске нужно подключиться к БД, установить какие-то начальные значения, прочитать и установить настройки для работы каждого слоя, и т.д.
Например, при запуске нужно создать подключение к конкретной БД, и если подключение не установлено, то и нету смысла вызывать какую-то бизнес-операцию.

Где (в каком месте, в каком слое) надо выполнять все эти операции?
На вышеприведенной картинке не видно подходящего места.

Например, запускается web-клиент. Ясное дело, что клиент ничего не знает про подключение к БД и про настройки БД.
Слой БД тоже не знает про настройки БД. Он просто выполняет свою работу с любыми произвольными настройками, которые ему надо указать.
А кто знает? Какой слой знает про особенности и настройки конкретной БД, чтобы ее проинициализировать?
А ведь кроме БД нужно прочитать\установить настройки и других инфраструктурных микро-сервисов.

Получается, в начальной точке приложения должен быть какой-то супер-класс, который знает про особенности инициализации всех инфраструктурных слоев приложения.
Верно?
Но тогда получается, что это "плохой" God-объект.
Ведь везде пишут что такие "всезнающие" объекты — это плохо.

Как же быть?
Как делать инициализацию? В какой точке? И в каком месте указанной картинки эта точка должна располагаться?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.