sách gpt4 ai đã đi

android - 如何使用 Realm "live"对象并保持数据库层与其他层(业务、UI 等)解耦?

In lại 作者:行者123 更新时间:2023-11-29 14:45:24 28 4
mua khóa gpt4 Nike

我正在玩 Realm for Android。

我喜欢自动更新对象的想法,但我对它的软件架构有顾虑。

我已经看到许多提议的架构都指定了一个层来处理数据/数据库访问,理想情况下,更高层不会知道有关数据库实现的细节。这将有助于可维护性、模块化等。

当你使用 Realm 对象时,如果你想利用它们的自动更新属性,我能想到的最常见的方法是将这些对象放在 Activity/Fragment 代码中。现在让我们假设用户刚刚在屏幕上编辑了数据(由引擎盖下的 Realm 对象表示)并正在保存这些编辑。如果你调用这个对象的setter,那实际上是一个数据库操作,你需要一个事务。通过在 Activity/fragment 代码上创建数据库事务,架构会分崩离析,因为您让 UI/业务层了解数据库实现细节。

我的问题是:如何以不损害架构的方式利用 Realm 自动更新对象?

旁注:我在最近的一个应用程序中使用了 Realm,对于每个查询,我们必须将结果复制到非托管对象,以便我们可以将它们发送到 UI/业务层。我认为这不是最好的策略,因为我们无法充分利用 Realm。

1 Câu trả lời

经过一番研究,我得出的结论是,将 Realm 集成到应用程序中确实需要做出重大选择:安全集成 x 深度集成。

安全集成

在这里,您会将 Realm 与其余的应用代码隔离开来。为此,您将无法使用 Realm 的自动更新/零副本。相反,您将拥有非托管副本,以确保在访问对象的任何地方,您都不会遇到不同线程访问相同对象的问题。这样测试更容易。

深度整合

在这里,您将充分发挥 Realm 的潜力,在请求时延迟加载数据。缺点是代码的其他层会知道 Realm,因为它们需要确保托管对象不会被不同的线程访问。如果您不启动新应用,此选项可能涉及大量重构,但会带来零复制方法的性能优势。

我的回答基于这些文章:https://medium.com/@Viraj.Tank/realm-integration-in-android-best-practices-449919d25f2f#.ms3nenq0mhttps://medium.com/@Viraj.Tank/deep-integration-of-realm-in-android-production-code-part-2-with-mvp-4cf44ab6289d#.qq4p12mtw

关于android - 如何使用 Realm "live"对象并保持数据库层与其他层(业务、UI 等)解耦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40384249/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com