Android 存储库模式

标签 android repository-pattern android-room android-livedata

我有几个关于 Repository 模式的问题:

  1. 如果我只使用离线数据库,例如带 LiveData 的 Room,是否可以使用 Repository 模式?

  2. 如果我的应用程序现在处于离线状态,但将来会连接到远程数据库,我是否应该实现存储库模式,或者以后再做也不会成为问题?

最佳答案

首先,Repository 模式与技术或编程语言无关。

存储库模式有助于将持久性问题与应用程序的其余部分分开。这也有助于提高测试能力,因为现在,您可以模拟存储库并轻松测试其余代码,而无需连接到持久层。

If I'm using only offline database for example Room with LiveData is there any use of Repository pattern?

我不知道这些技术。但是如上所述,存储库的目的是对持久性的无知。无论您的数据存储是什么(内存数据库、RDBMS、Excel/CSS、Web 服务、XML、JSON 或其他),存储库模式都有助于将其抽象化。所以是的,存储库模式在这里很有用。

If my app is offline right now, but will be connected to remote db in the future should I implement repository pattern or it's not going to be a problem to do it later?

事实上,我会强烈推荐在这里实现存储库。由于持久性被忽略,您的应用程序的其余部分可以很容易地设计,假设数据将以某种方式可用/持久化(在离线情况下是本地的,在未来的情况下是服务器),甚至不知道它是离线还是在线。这样,当您将来从本地存储转移到远程存储时,您的应用程序不会受到任何影响,因为它是针对存储库接口(interface)构建的,并且这些接口(interface)不会改变。持久性问题现在完全由 Repository 处理。

我的其他answer可能会有帮助。

关于Android 存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50573183/

相关文章:

java - 元素没有到达 fragment XML 中应有的位置

asp.net-mvc - L2S 数据上下文不同步 : row not found or changed

entity-framework - 在类库中注册容器(IoC)?

android - Room 返回的 Livedata GC 后不会触发

android - RxJava2 toList() 从不发射

java - 从数组填充 GridView

android - 如何保持显示编辑文本的警报对话框

java - 如何在类之间异步发送数据?

android - 如何在 Android SDK(不是 NDK)中使用 OpenGL ES 2.0?

c# - MVC ViewModels 和 Entity Framework 查询