我们应该为每个活动创建一个单独的存储库还是为整个应用程序创建一个存储库

问题描述 投票:0回答:2

我的应用程序遵循

MVVM
架构。在 Activity 中,如果新闻尚未缓存,我需要从 URL
getNews()

活动将要求

ViewModel
提供
News Json
ViewModel
将查看存储库,并决定从本地或远程存储库发送数据。

现在的困惑源于以下一点:我应该为每个 Activity 创建一个单独的 Repository 类,还是为每个 Activity 通信的整个项目创建一个通用的 Repository 类。在第二种方法中,存储库类会很大。

我无法找到有关此主题的任何官方指南,我想知道这方面的最佳实践。

android android-architecture-components android-livedata android-mvvm
2个回答
19
投票

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

我建议您为每个 viewmodel 创建单独的 repositories,并为多个 viewmodels 使用的数据另外创建 services

在您的示例中,这意味着您有一个 NewsSource service 负责检索和缓存新闻 JSON,并让所有需要该数据的 repositories 从那里检索数据。


0
投票

我已经很晚了,但这可能对其他来这里的人有帮助!

Google(截至 2023 年 12 月)推荐的使用存储库模式的最佳实践是

to have a repository for each type of data source your app uses.

您可以在此处进一步阅读:添加存储库和手动 DI

它进一步指出:

什么是存储库?

一般来说,存储库类:

  • 将数据暴露给应用程序的其余部分。
  • 集中对数据进行更改。
  • 解决多个数据源之间的冲突。
  • 从应用程序其余部分提取数据源
  • 包含业务逻辑
© www.soinside.com 2019 - 2024. All rights reserved.