Выбор ответа Senior Архитектура: MVVM, MVI, Clean обновлено

Направление зависимостей в Clean Architecture

Вопрос

Как направлены зависимости между модулями domain и data в Clean Architecture?

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

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

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

Коротко

Правильный ответ: data зависит от domain: domain объявляет интерфейсы, data их реализует. Бизнес-логика в центре не должна знать о деталях: domain описывает интерфейс FeedRepository, а data реализует его на Retrofit и Room и зависит от domain.

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

  1. domain зависит от data, чтобы use case мог напрямую вызывать Retrofit и Room
  2. data зависит от domain: domain объявляет интерфейсы, data их реализуетправильный ответ
  3. Модули не зависят друг от друга, их связывает только общий модуль :core:model
  4. Оба зависят от presentation, потому что именно он задаёт нужные модели

Разбор

Бизнес-логика в центре не должна знать о деталях: domain описывает интерфейс FeedRepository, а data реализует его на Retrofit и Room и зависит от domain. Это инверсия зависимостей. Связывает реализацию с интерфейсом DI. Если domain зависит от data, бизнес-логика тянет за собой фреймворки, а presentation находится на внешнем слое и ни от кого внутри не требуется.

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

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