Re: Инициализация приложения - внедрение зависимостей в DDD
От: vmpire Россия  
Дата: 10.11.23 09:44
Оценка: 2 (1) -1
Здравствуйте, zelenprog, Вы писали:


Z>А как это делается?

Z>По идее должна быть какая-то "центральная" точка, которая при инициализации создает конкретные объекты-реализации и передает их в Бизнес-логику.
Z>Но ведь невозможно же заранее "знать" какие объекты могут понадобиться в программе. Получается Бизнес-логика должна сама создавать тот объект, который ей понадобится.
Z>А как ей указать класс\тип объекта, который она должна использовать?
Z>Как правильно надо сделать?

То, что Вам нужно называется Dependency Injection Container. Дальше есть 3 варианта:

1. Часть реализаций можно там зарегистрировать сразу (те, что известны заранее), часть — во время выполнения программы. Как это сделать и возможно ли — зависит от используемого контейнера.

2.Не делать динамическую регистрацию, а использовать factory class, который будет статически лежать в контейнере и возвращать нужную реализацию, например, репозитория, выбирая её в рантайме.
Это и будет та самая "центральная точка"
Так можно с любым контейнером

3. Зарегистрировать в контейнере factory method. который будет возщвращать нужный интерфейс на информации, куда-то уже сохранённой приложением.
Это тоже будет та самая "центральная точка".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.