Карточка Middle Clean Architecture и слои обновлено
Инверсия зависимостей
Вопрос
Что такое принцип инверсии зависимостей (DIP) на примере мобильного приложения?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Модули верхнего уровня (use case) зависят от абстракций (interface UserRepository), а не от реализаций (RetrofitUserRepository). Реализация зависит от той же абстракции и подставляется через DI.
Ответ
Модули верхнего уровня (use case) зависят от абстракций (interface UserRepository), а не от реализаций (RetrofitUserRepository). Реализация зависит от той же абстракции и подставляется через DI.
Разбор
Отсюда тестируемость: в тесте use case получает фейковый репозиторий.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Clean Architecture и слои»
- Правило зависимостей в Clean Architecture
- Что можно импортировать в domain-слой
- Зачем маппить DTO в доменные модели
- Ошибки на границах слоёв
- Сколько моделей нужно на сущность
- Путь действия пользователя через слои
- Когда Clean Architecture избыточна
- Где объявлять интерфейс репозитория