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