Size: a a a

Android Architecture

2021 May 31

A

Aleksei in Android Architecture
что значит медиатор? зачем он нужен?
источник

JF

Jorik Fat in Android Architecture
посредник (паттерн такой)
источник

JF

Jorik Fat in Android Architecture
Представьте фичу регистрации, на 3х экранах.
На 2 выбирается тип пользователя, и от этого зависит какой будет 3й экран.
Все 3 экрана это одна фича. И данные с первой, и со второй страницы должны попадать в третий.
Как это лучше всего выполнить?
источник

A

Aleksei in Android Architecture
очевидно - общая ВМ
источник

JF

Jorik Fat in Android Architecture
а если экраны должны быть представленны в виде 3х activity?
источник

JF

Jorik Fat in Android Architecture
"потому что у нас приложению уже 10 лет и у нас все на Activity"
источник

PS

Paul Savchenko in Android Architecture
А такое часто бывает? Последние лет пять
источник

JF

Jorik Fat in Android Architecture
такого практически не бывает. Но архитектура не зависит от платформы
источник

A

Aleksei in Android Architecture
ну вобщ я понял главное - интерактор - это что-то из легаси
Но вернемся к нашему случаю - что же может предложить интерактор? как он может быть посредником между ВМ если инстансы их еще не созданы?
источник

JF

Jorik Fat in Android Architecture
1. интерактор это не легаси
2. DI
источник

TA

Tamim Attafi in Android Architecture
Нет, ты ходил по ссылкам, особенно  по второй?)

Представим у тебя есть usersRepository, ты хочешь сделать сложный query в BD, и отображать их во вющке, фильтрацию можно (Если у тебя не clean architecture) сделать в Presenter или в ViewModel, ок.

Допустим у тебя в другом месте нужен такой же результат, ты будешь копи паситить код из одного ViewModel/Presenter в другой? Use-Case и интерактор решают эту проблему, они тебе дают сразу окончательный результат который тебе нужен, и дают тебе возможность переиспользовать этот функционал в разных местах.

Это самый простой кейс почему нам нужны interactor/use-case, есть еще другие проблемы как разделения бизнес логики от presentation слое, или взоймодействовать с 2+ репозиториями или другими компонентами, или с 2+ datasource'ы и тд
источник

A

Aleksei in Android Architecture
а стейт накликанный юзером в первых двух экранов где хранится?
источник

JF

Jorik Fat in Android Architecture
в интеракторе
источник

A

Aleksei in Android Architecture
прямо в его полях/пропертях?
источник

JF

Jorik Fat in Android Architecture
да
источник

JF

Jorik Fat in Android Architecture
Открываем первый экран, вводим номер телефона, подтверждаем, next (номер телефона записывается в interactor, и этот интерактор инжектится во второй экран)
источник

A

Aleksei in Android Architecture
прямо в активити инжектится? даггером? со скоупом синглтон/логинСкоуп?
источник

JF

Jorik Fat in Android Architecture
Может прям в Acitivity, может в Activity->VM->Interactor. В зависимости от требований
источник

JF

Jorik Fat in Android Architecture
если например, нужно просто отобразить все что было введено ранее, для проверки - не вижу смысла в VM
источник

A

Aleksei in Android Architecture
да, здеь как-то сразу на ум приходит UseCase.
Но ведь ээто все не хранит уже полученные данные(стейт) (которые уже могли устареть), а совершает повторный запрос в БД?
источник