要从数据库类或MVC中的数据模型类查询数据库?

时间:2014-02-28 04:59:35

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

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

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

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

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

非常感谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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