Tsudzukeru
@Tsudzukeru

Правильно ли понимаю направление зависимостей в Clean Architecture?

Есть вот вот такое представление схемы где показано направление dependency rule:
spoiler
63a041071a9fa048750202.png

1) UI зависит от ViewModel потому что имеет ссылку на экземпляр класса ViewModel
2) ViewModel зависит от UseCase потому что имеет ссылку на экземпляр класса UseCase (в данном случае UseCase это класс без всякой имплементации интерфейсов)
3) UseCase содержит ссылку на репозиторий (интерфейс), но на схеме показана зависимость от Repository к UseCase. Это потому что используется принцип Dependency inversion?
4) Тоже самое для DataBase. Ссылка на интерфейс, а значит DIP. Поэтому зависимость обратная?
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
WelloGraphics
@WelloGraphics
Android development
Да, всё верно.

В чистой архитектуре обычно делают разделение на 3 слоя — data, domain, presentation.
Связи между ними такие:
1) data знает про domain
2) domain не знает ни про кого
3) presentation знает про domain.

Чтобы соблюдать эти правила и используется инверсия зависимостей.
Внутри UseCase нам нужно обращаться к репозиторию — но его реализация находится в data-слое, а сам UseCase — в domain. Получается, что UseCase никак не может узнать про реализацию репозитория. Но он может знать про интерфейс репозитория, который определяется в доменном слое, так как в этом случае мы не выходим за границы слоя и работаем только внутри domain.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы