класса репозитория (например) передается через 1.конструктор/2.сеттер поля/3.аргумент метода
то это и есть DI
Т.е. работа интерактора зависит от работы репозитория
значит эту зависимость желательно передавать из вне
а не создавать внутри класса, который её(зависимость) использует
Почему?
1. Потому что реализацию репозитория можно будет заменить, не затронув логики в интеракторе. Т.е. код в интеракторе менятся не будет никак. (вчера одну базу юзали для хранения, сегодня другу, репозиторий, заменили, база поменялась, вся логика работает как прежде, ноо это уже совместо с интерфейсами).
2. Потому что вместо реализации можно мокнутый объект передать и проверить что интрактор делает с этим объектом именно то что было задумано разработчиком (вызван метод "сохранить" ровно один раз, и метод "получить некие данные" ровно два раза)
Как то так.
3. Всё зависимости этого класса явно видны и не скрыты внутри него. Что способствует переносимости и переиспользуемости кода.
Обсуждают сегодня