и в MVVM паттерне роль интерактора выполняет вьюмодель?
чаще всего да, роль интерактора берет на себя VM. Но когда фича состоит больше чем из одного экрана, нужен медиатор между этими VM. Interactor берет на себя эту задачу
что значит медиатор? зачем он нужен?
посредник (паттерн такой)
Представьте фичу регистрации, на 3х экранах. На 2 выбирается тип пользователя, и от этого зависит какой будет 3й экран. Все 3 экрана это одна фича. И данные с первой, и со второй страницы должны попадать в третий. Как это лучше всего выполнить?
очевидно - общая ВМ
а если экраны должны быть представленны в виде 3х activity?
А такое часто бывает? Последние лет пять
такого практически не бывает. Но архитектура не зависит от платформы
Нет, ты ходил по ссылкам, особенно по второй?) Представим у тебя есть usersRepository, ты хочешь сделать сложный query в BD, и отображать их во вющке, фильтрацию можно (Если у тебя не clean architecture) сделать в Presenter или в ViewModel, ок. Допустим у тебя в другом месте нужен такой же результат, ты будешь копи паситить код из одного ViewModel/Presenter в другой? Use-Case и интерактор решают эту проблему, они тебе дают сразу окончательный результат который тебе нужен, и дают тебе возможность переиспользовать этот функционал в разных местах. Это самый простой кейс почему нам нужны interactor/use-case, есть еще другие проблемы как разделения бизнес логики от presentation слое, или взоймодействовать с 2+ репозиториями или другими компонентами, или с 2+ datasource'ы и тд
да, здеь как-то сразу на ум приходит UseCase. Но ведь ээто все не хранит уже полученные данные(стейт) (которые уже могли устареть), а совершает повторный запрос в БД?
и это не обязательно. У меня был кейс, когда нужно было отобразить заявки пользователя (Все заявки / мои заявки), и с сервера приходила просто пачка заявок. Их нужно было где-то по id фильтровать и показать поразень
и типа ты эти списки складывал в один объект и инжектил этот объект? Просто если это для одного экрана нужно то фильтрануть можно в репозитории и вернуть во вьюмодель эти списки, а если на нескольких экранах то данные могут устареть во время перехода между экранами
в репозитории нет состояния
ну фильтранем во вьюмодели/юзкейсе, не важно, сути вопроса не меняет
UseCase это часть Interactor'а
Юзкейс это и есть интерактор
ну вот не совсем. Interactor больше
Обсуждают сегодня