Android Repository模式

时间:2018-05-28 20:38:29

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

我对存储库模式有几个问题:

  1. 如果我只使用离线数据库,例如Room with LiveData,是否使用了存储库模式?

  2. 如果我的应用程序现在处于脱机状态,但将来会连接到远程数据库,我是否应该实现存储库模式,否则以后不会出现问题?

2 个答案:

答案 0 :(得分:5)

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

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

  

如果我只使用离线数据库,例如Room with LiveData有没有使用Repository模式?

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

  

如果我的应用程序现在处于脱机状态,但将来是否会连接到远程数据库,我是否应该实现存储库模式,否则以后不会出现问题?

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

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

答案 1 :(得分:1)

IMO

  1. 是的,它有助于抽象数据的存储方式,因此您可以灵活地响应已知和未知的变化。

    • 测试。嘲笑
    • 替代构建,例如Android即时,总是从网络中获取数据?
    • 其他数据库库。例如,假设您希望您的功能使用Kotlin Native跨平台,并且需要替代数据库库
  2. 需要重构。我认为这取决于您的应用程序的详细信息以及它的大小。