我们应该为整个应用程序的每个Activity或单个存储库创建一个单独的存储库

时间:2018-05-22 11:37:56

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

我正在关注我的应用的MVVM架构。在活动中,如果新闻尚未缓存,我需要从URL getNews()

活动会要求ViewModel提供News JsonViewModel会查看存储库,并决定从本地或远程存储库发送数据。

现在混淆源于以下几点:我应该为每个Activity创建一个单独的Repository类,还是为每个活动与之通信的整个项目创建一个通用的Repository类。在第二种方法中,存储库类将是巨大的。

我无法找到关于这个主题的任何官方指南,我想知道这方面的最佳做法。

1 个答案:

答案 0 :(得分:8)

为整个应用程序创建一个存储库绝对不是一个好主意,因为它将变得非常大并且非常快速地完全无法管理。

我建议您为每个 viewmodel 创建单独的存储库,并为多个 viewmodels <使用的数据另外服务 / strong>即可。

在您的示例中,这意味着您拥有 NewsSource 服务,负责检索和缓存新闻JSON并拥有所有存储库需要数据从那里检索它。