【问题标题】:Android Repository patternAndroid 存储库模式
【发布时间】:2018-05-28 20:38:29
【问题描述】:

我有几个关于存储库模式的问题:

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

  2. 如果我的应用程序现在离线,但将来会连接到远程数据库,我应该实现存储库模式还是以后再做不会有问题?

【问题讨论】:

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


    【解决方案1】:

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

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

    如果我只使用离线数据库,例如带有 LiveData 的 Room,是否使用存储库模式?

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

    如果我的应用程序现在离线,但将来会连接到远程数据库,我应该实现存储库模式还是以后再做不会有问题?

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

    我的另一个answer 可能会有所帮助。

    【讨论】:

      【解决方案2】:

      国际海事组织

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

        • 测试。模拟
        • 始终从网络获取数据的替代版本(例如 Android Instant)?
        • 其他数据库库。例如,假设您希望您的功能使用 Kotlin Native 跨平台,并且需要替代数据库库
      2. 需要重构。我认为这取决于您的应用的详细信息以及应用的大小。

      【讨论】:

        猜你喜欢
        • 2018-08-25
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多