Где я должен объединить несколько сетевых запросов в MVVM?UseCases или Репозиторий? - PullRequest
1 голос
/ 30 мая 2019

Я занимаюсь рефакторингом нашей кодовой базы. Сейчас у нас есть одноэлементный репозиторий, который выполняет сетевые запросы и управляет связью операторов с RxJava и Kotlin Coroutines.

Однако этот репозиторий внедряется в несколько моделей представления и становится труднее поддерживать.

Я хотел бы абстрагировать нашу кодовую базу и интегрировать некоторые варианты использования. Насколько я знаю, по общему мнению, в useCase используется один сетевой запрос, поэтому я не уверен в цепочке сетевых запросов.

Мне нужно объединить несколько сетевых запросов, используя Observable.zip и RxJava Subjects.

Будет ли следующий поток правильным?

Viewmodel вызывает useCase, который создает сетевой запрос (из репозитория), обрабатывает этот сетевой запрос, создает LiveData и перенаправляет эти LiveData в ViewModel, а также обновляет тему из репозитория , чтобы репозиторий мог выдавать некоторые данные после завершения всех сетевых запросов?

Тогда наш репозиторий остается похожим на наш текущий подход с меньшим количеством кода и будет отвечать только за цепочку нескольких сетевых запросов.

Надеюсь, я был достаточно ясен. Я исследовал несколько примеров MVVM, но они казались непрактичными для реальных приложений с сложной сетевой логикой .

1 Ответ

3 голосов
/ 30 мая 2019

Вы не должны связывать разные вызовы API в репозитории. Сопоставление с более сложными объектами домена должно быть выполнено в случае использования. Обычно существует более одного репозитория, каждый из которых отвечает за некоторую часть моделей бизнес-доменов (например, UsersRepository, PostsRepository и т. Д.). Вариант использования может зависеть от нескольких хранилищ.

Пример (приложение Plaid)

...