【问题标题】:Design for persistent objects with decoupled storage具有解耦存储的持久对象设计
【发布时间】:2016-12-12 18:06:26
【问题描述】:

一个应用程序使用几种类型的编码为对象的数据。这些对象需要持久化,并且存储后端可能会发生变化(文件系统、sqlite、nedb 是可能的选项)。

设计相关代码以尽量减少更改存储的麻烦的最佳方法是什么?我将传递我的对象的特定 Store 对象?我的对象是否继承自存储?我的对象是否应该“自我存储”?

关于信息,实际案例是使用 node-webkit (javascript) 的本地 webapp,但答案可能不依赖于语言,只要它是面向对象的。

【问题讨论】:

  • imo,对象不应该self-store,因为这是所有对象都需要的额外耦合层——即使是临时对象。 imo,存储库模式对此很有用。它将对象与实际存储分离。如果使用接口定义,它可以非常灵活,尤其是在测试等时。
  • 看看@数据映射器

标签: oop object design-patterns


【解决方案1】:

只要您有可能更改的功能,请通过引入接口将其抽象,并提供实现。在您的具体示例中,您可以定义一个接口IRepository,它具有用于操作对象的创建/读取/更新/删除方法。然后,您可以提供适用于特定存储的实现。例如,在您的单元测试中,您可以使用基于内存的实现,它甚至不处理文件/数据库/等,而是将数据保存在列表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2021-04-22
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    相关资源
    最近更新 更多