【发布时间】:2018-05-28 20:38:29
【问题描述】:
我有几个关于存储库模式的问题:
如果我只使用离线数据库,例如带有 LiveData 的 Room,有没有使用 Repository 模式?
如果我的应用程序现在离线,但将来会连接到远程数据库,我应该实现存储库模式还是以后再做不会有问题?
【问题讨论】:
标签: android repository-pattern android-room android-livedata
我有几个关于存储库模式的问题:
如果我只使用离线数据库,例如带有 LiveData 的 Room,有没有使用 Repository 模式?
如果我的应用程序现在离线,但将来会连接到远程数据库,我应该实现存储库模式还是以后再做不会有问题?
【问题讨论】:
标签: android repository-pattern android-room android-livedata
首先,存储库模式与技术或编程语言无关。
存储库模式有助于将持久性问题与应用程序的其余部分分开。这也有助于提高测试能力,因为现在,您可以在不连接持久层的情况下模拟存储库并轻松测试其余代码。
如果我只使用离线数据库,例如带有 LiveData 的 Room,是否使用存储库模式?
我不了解这些技术。但是如上所述,存储库的目的是对持久性的无知。无论您的数据存储是什么(内存数据库、RDBMS、Excel/CSS、Web 服务、XML、JSON 等),存储库模式都有助于对其进行抽象。所以是的,存储库模式在这里很有帮助。
如果我的应用程序现在离线,但将来会连接到远程数据库,我应该实现存储库模式还是以后再做不会有问题?
事实上,我强烈建议在这里实现存储库。由于忽略了持久性,您可以轻松地设计应用程序的其余部分,假设数据将以某种方式可用/持久化(在离线的情况下是本地的,在未来的情况下是服务器的),甚至不知道它是离线还是在线。这样,当您将来从本地存储转移到远程存储时,您的应用程序不会受到任何影响,因为它是针对存储库接口构建的,并且这些接口不会改变。持久性问题现在完全由存储库处理。
我的另一个answer 可能会有所帮助。
【讨论】:
国际海事组织
是的,抽象数据的存储方式很有用,因此您可以灵活地响应已知和未知的变化。
需要重构。我认为这取决于您的应用的详细信息以及应用的大小。
【讨论】: