Выбор ответа Middle Clean Architecture и слои обновлено

Где объявлять интерфейс репозитория

Вопрос

В каком слое объявляют интерфейс UserRepository, если следовать Clean Architecture?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В domain, а реализация живёт в data. Интерфейс принадлежит тому, кто им пользуется: use case в домене.

Варианты ответа

  1. В data вместе с реализацией и DTO
  2. В domain, а реализация живёт в dataправильный ответ
  3. В presentation рядом с view model, которая его вызывает
  4. В отдельном модуле network

Разбор

Интерфейс принадлежит тому, кто им пользуется: use case в домене. Data-слой его реализует, и стрелка зависимости идёт от data к domain. Если объявить интерфейс в data, домен начнёт зависеть от data. На практике в небольших проектах интерфейс иногда держат в data ради простоты, но это компромисс, который стоит проговорить на собесе.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.