Таймкоды: 00:25 Что было в первой лекции 01:06 Clean Architecture 04:27 Почему Domain слой - внутренний? 05:46 Деление на модули 07:05 Пример кода 08:27 UseCase vs Interactor 09:44 Маппинг 11:20 Как связать разные компоненты? 16:04 Dagger 20:10 Особенности Dagger 25:10 Реактивное программирование 27:20 Flow 29:19 Итог 30:26 Домашнее задание
Что то не понятно, почему говорите, что слой данных зависит от бизнес логики (Usecases), но при этом слой данных передается в конструктор Usecases. Одно другому противоречит.
Про это как раз говорится в 4:10. Идея в том, что бизнес логика (usescases) разрабатывается не думая о том, как устроены репозитории. В слое бизнес логики есть интерфейс, под который репозитории должны подстроиться. И потом, при сборке зависимостей, например, через dagger, в юзкейс будет прокинута нужная реализация репозитория
Видео супер! Подскажите пожалуйста, из слоя Data у Вас выходит тип данных Flow, этот же тип получает Domain и передаёт в Presentation. Получается, что Domain привязан к Data этой моделью Movie ? Сейчас столкнулся с этой проблемой в своём приложении и ищу правильную передачу Flow через слои
очень странно что так мало просмотров, отличное видео. хотелось бы еще детальный разбор о месте различных андроид компонент, как например livedata в clean architecture, потому что когда читаешь статьи в целом про CA, сложно их наложить на андроид architecture components бывает. есть конечно статьи про CA конкретно на андроид вроде той, откуда были взяты картинки со слоями из начала видео, но опять же там нет ничего про architecture components
Хорошая лекция. Есть один вопрос: слой domain должен быть полностью изолирован от всяких библиотек, но вы используете там Flow от корутин. Не является ли это нарушением принципа чистой архитектуры?
Domain слой может использовать библиотеки, но не должен использовать библиотеки, которые привязывают его к конкретной платформе (например, LiveData). Flow и корутины не зависят от платформы.
Все равно непонятно, зачем создавать ContextModule, если к нему нельзя обратиться из модуля data, потому что daggerapplicationcomponent находится в presentation. А если его и создавать в data, то там нет контекста, чтобы создать ContextModule
@@doubletapp.studio Сейчас делаю приложение с использованием Clean architecture, но пока без дагера, с учетом этого, такой код считается приемлемым во фрагменте?: val repo = RepositoryImpl() val case = LoadUseCase(repo) val viewModel = ViewModelProvider(this,ViewModelFactory(case)).get(MainViewModel::class.java) Просто смущает наличие репозитория тут, или когда нет библиотек для работы с DI это норм? p.s. На вход фабрики у меня интерфейс Repository.
Dagger - упоротая либа от упоротых разработчиков. Используйте Coin и не выдумывайте. Я дагером пользовался несколько лет. И вот, уже почти пол года использую коин. В разы понятней и удобней