我应该在MVVM中将多个网络请求链接到哪里?用例还是存储库?

Vik*_*kov 2 android mvvm rx-java2 android-livedata android-architecture-components

我正在重构我们的代码库。现在,我们有一个单一存储库,用于存储网络请求并管理与RxJava和Kotlin Coroutines链接的运营商。

但是,该存储库被注入到多个ViewModel中,并且变得难以维护。

我想抽象我们的代码库并集成一些用例。据我所知,在useCase中使用单个网络请求是普遍的观点,这就是为什么我不确定如何链接网络请求的原因。

我需要使用Observable.zip和RxJava主题链接多个网络请求

以下流程是否正确?

Viewmodel调用useCase,后者从存储库创建网络请求,处理该网络请求,创建LiveData并将该LiveData转发到ViewModel,还从Repository更新主题,以便在所有网络请求完成后Repository可以发出一些数据

然后,我们的存储库仍然与我们当前的方法类似,只需要较少的代码,并且仅负责多个网络请求链接。

我希望我足够清楚。我研究了多个MVVM示例,但是它们对于具有复杂网络逻辑的实际应用似乎并不实用。

Der*_*k K 5

您不应在存储库中链接不同的API调用。映射到更复杂的域对象应该在用例中完成。通常有一个以上的存储库,每个存储库负责业务域模型的某些部分(例如,UsersRepository,PostsRepository等)。用例可以取决于多个存储库。

示例(格子应用)