android - 从 DB 类或 MVC 中的数据模型类查询数据库?

标签 android database sqlite class model-view-controller

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

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

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

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

非常感谢!

最佳答案

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

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

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

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

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

关于android - 从 DB 类或 MVC 中的数据模型类查询数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22086631/

相关文章:

android - 带背景的 ImageView 半径

使用 LetsEncrypt SSL 证书的站点的 Android 数字 Assets 链接验证失败

php - 如何在 phpMyAdmin 中填充数据库的多个表

c# - 更新 SqlCommand - 不在数据库中更新

sql - 如何在大表中选择重复的行/记录

php - 有没有办法记录 SQLite 查询?

android - 使用 Android 版 Chrome 移动版的路线加载 Google map

java - 如何使用java appium客户端在android中滚动?

swift - 将 INNER JOIN 查询从 SQLite 转换为 SQLite.Swift

ios - Google Analytics SDK 创建 SQLite 错误