Size: a a a

Android Developers

2020 December 28

SG

Sergey Grieg in Android Developers
Вообще итерактор — просто шлюз
источник

SG

Sergey Grieg in Android Developers
А вот юзкейс (тот же слой) — он уже содержит бизнес-логику в себе
источник

S

Silent829 in Android Developers
Silent829
подскажи пожалуйста @mairwunnx
подскажи пожалуйста @mairwunnx (2)
источник

SG

Sergey Grieg in Android Developers
это маппинг данных, сортировка, исключение каких-то данных, да и в целом их подготовка для отдачи на слой выше, где будет уже application логика
источник

S

Silent829 in Android Developers
Sergey Grieg
Вообще итерактор — просто шлюз
а зачем он?
источник

SG

Sergey Grieg in Android Developers
Sergey Grieg
это маппинг данных, сортировка, исключение каких-то данных, да и в целом их подготовка для отдачи на слой выше, где будет уже application логика
Вопрос в другом — что такое бизнес-логика и application логика
источник

SG

Sergey Grieg in Android Developers
Silent829
а зачем он?
Чтобы у тебя не было все в одном месте. Репозиторий тусуется в слое данных и занимается исключительно их получением/записью
источник

SG

Sergey Grieg in Android Developers
domain слой — оперирует ими. Готовит, варит, парит, реализует какую-то бизнес-логику
источник

SG

Sergey Grieg in Android Developers
А presentation слой их просто отображает и содержит работу с библиотеками
источник

S

Silent829 in Android Developers
почему юзкейс не может напрямую работать с репозиторием?
источник

PE

Pavel Erokhin in Android Developers
Silent829
окей, смотри у меня есть LocalDataSource + RemoteDataSource, у обоих интерфейсов есть общая suspend-функция, которая должна вернуть список List<*>. Я в репозитории имею оба этих объекта, у него есть функция, возвращающая Flow<DataState<List<*>>>, я тут делаю emit(Loading),  беру у ремоута данные, потом у локального, сравниваю их и дальше сохраняю если надо в кэш и делаю emit(Error) если что пошло не так. Потом в юзкейсе беру этот флоу, могу его фильтровать как-нибудь и во вьюмодельке потом беру флоу юзкейса, а во фрагменте делаю коллект внутри лайфсаклскоуп.лаунч
не совсем понял, если честно, ну вот ты эмитишь стейт, окей
у тебя должен быть Мутейбл стейт флоу в котором будешь хранить текущий стейт
и все, подпишись на него в лаунче и меняй его когда тебе надо, уже под стейтом будешь отображать соответствующие элементы на экране например

если я тебя понял
источник

SG

Sergey Grieg in Android Developers
Все слои должны смотреть внутрь только, при том каждый слой нужно иметь возможность протестировать
источник

SG

Sergey Grieg in Android Developers
Silent829
почему юзкейс не может напрямую работать с репозиторием?
вообще — обычно юзкейс так и делает
источник

S

Silent829 in Android Developers
Pavel Erokhin
не совсем понял, если честно, ну вот ты эмитишь стейт, окей
у тебя должен быть Мутейбл стейт флоу в котором будешь хранить текущий стейт
и все, подпишись на него в лаунче и меняй его когда тебе надо, уже под стейтом будешь отображать соответствующие элементы на экране например

если я тебя понял
проблема в том что я использую обычный флоу, а не стейтфлоу?
источник

SG

Sergey Grieg in Android Developers
а interactor/gateway — просто прокидывает результат работы наверх
источник

S

Silent829 in Android Developers
Sergey Grieg
вообще — обычно юзкейс так и делает
ну у меня так) вот спрашиваю зачем мне еще нужен посредник
источник

PE

Pavel Erokhin in Android Developers
Silent829
проблема в том что я использую обычный флоу, а не стейтфлоу?
из того что я понял, да, для твоей задачи он больше подходит, но, я хз как ты там все написал, попробуй стейт флоу
источник

SG

Sergey Grieg in Android Developers
честно? Сам хуй знает
источник

SG

Sergey Grieg in Android Developers
Но "так повелось"
источник

SG

Sergey Grieg in Android Developers
А вообще зачем-то он нужен, думаю
источник