【问题标题】:To Query the DB from the DB Class or From the Data Model Class in MVC?在 MVC 中从 DB 类或数据模型类中查询数据库?
【发布时间】:2014-03-31 22:50:26
【问题描述】:

我有一种情况,我使用一个名为“Stock”的数据模型类来组织我的数据库的输出。 Stock 从 SQLite DB 获取报价信息,并将其本地字段设置为所述值。使用 getter 我从 Stock 中获取值。

我使用通过扩展 SQLiteOpenHelper 创建的数据库类,目前我将所有数据库逻辑作为公共方法。但是,我觉得这可能不是最好/最合乎逻辑的方式。

我是一个纯粹主义者,因为我觉得这些最佳实践会带来最易读的代码,所以我想知道在每个相应的数据模型类中包含所有数据库逻辑是否是标准的,或者是否将其集中在数据库类中也被接受。

非常感谢您对此主题的意见和任何示例。我正在尝试实现一个我认为是 MVC 或接近的范例,但我不确定这方面如何适合......

非常感谢!

【问题讨论】:

    标签: android database sqlite class model-view-controller


    【解决方案1】:

    我认为将数据模型与数据库实现分开会更好。正如你所说,它更具可读性。

    请记住,在面向对象编程中,每个外部对象都由一个类建模。每个对象都应该在类中封装它的所有功能,并以方法和函数的形式向外界公开一些连接。

    话虽如此,对象通过调用彼此的方法进行交互,但如何这些方法在内部工作是隐藏的。每个对象对于其他对象来说都是一个黑盒

    现在回到您的示例,您的 库存模型 负责创建、生成、计算...数据。您的 Stock 对象应使用另一个对象(数据库对象)作为黑匣子来保存此信息。为什么这个这么重要???因为明天您可能想要切换存储方式,也许您会将其存储在纯文本文件中,或者在线存储。如果将逻辑和存储分开,您可以只更改存储类的实现,使函数原型几乎相同(有一些细微差别),但您不需要修改 Stock 类。

    但这不是规则,每个项目都不一样。作为开发人员,我们有责任了解每种方法的优缺点并做出最佳选择。

    【讨论】:

    • 你说话的方式我能理解和欣赏。我没有意识到为什么这种分离如此重要。这使它单击,非常感谢。如果我将所有内容都封装在模型中,我永远不需要猜测它在哪里,正如你所说,我可以扔掉 DB 层,如果需要,用其他层替换它。尤里卡!你真棒。
    • @AutoM8R 感谢您的赞美! :)
    猜你喜欢
    • 2021-10-23
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多