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

时间:2019-05-30 09:16:06

标签: android mvvm rx-java2 android-architecture-components android-livedata

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

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

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

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

以下流程是否正确?

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

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

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

1 个答案:

答案 0 :(得分:2)

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

Example (Plaid app)