既然可以只使用 MySQL 数据库,为啥还要创建对象?

Posted

技术标签:

【中文标题】既然可以只使用 MySQL 数据库,为啥还要创建对象?【英文标题】:Why make Objects when you can just use a MySQL database?既然可以只使用 MySQL 数据库,为什么还要创建对象? 【发布时间】:2009-08-16 08:18:43 【问题描述】:

所以我对 php 的面向对象部分有点困惑。对于我对 PHP 和数据库知之甚少的事实,我马上道歉。

我的问题是,例如,当您正在创建一个数据库以将用户保存在其中时,当您可以从数据库中提取信息时,为什么还要为该用户创建一个类/对象?

另外,如果你要创建一个对象/类,对象的数据存储在哪里?例如,如果我有一个包含用户名和电子邮件的类,并且我创建了该对象,它会被存储吗?

感谢您抽出宝贵时间帮助学习新手!

【问题讨论】:

【参考方案1】:

我的问题是你什么时候制作 说一个数据库来保存用户, 你为什么要做一个 该用户的类/对象,当您 可以从数据库中提取信息。

您制作对象以抽象出特定的功能。如果您迁移到 Microsoft SQL Server(假设地)会发生什么?您只需编辑对象的实现,而不是更新您的整个站点。

另外,如果你要制作一个 对象/类的数据在哪里 存储的对象?就像一堂课 用户名和电子邮件,我做那个 对象,是否被存储。

与任何其他变量相同的位置。

【讨论】:

【参考方案2】:

在任何相当大的软件系统中,您想要在原始数据库访问之上使用一些抽象的原因有很多。如果您正在研究面向对象的方法,您应该考虑到面向对象范式的核心思想之一是对象封装了数据和作用于该数据的逻辑。

让我们举一个具体的例子。假设您的应用程序的一部分(UI)需要显示用户信息,包括格式良好的用户名。在 OO 世界中,您可以拥有一个 User 对象,该对象将在数据库中存储数据的本地副本,并公开诸如 getFormattedName() 之类的方法或类似的方法。现在,您的应用程序的其余部分可以使用该代码,而无需了解数据库,甚至无需了解名称的格式。另一方面,如果您只是直接从数据库中提取数据,那么应用程序的 UI 部分(它并不真正关心数据库)仍然必须知道如何从数据库中获取有关用户的信息,以及如何很好地格式化用户名。

【讨论】:

【参考方案3】:

简单地说,有一些逻辑不是在数据库表中捕获的,而是与条目相关的。数据库只存储原始数据。应在对象方法中捕获数据的使用方式以及数据与应用程序其他部分的交互方式。

【讨论】:

【参考方案4】:

您缺少面向对象设计的基础。完全忽略继承,对象将信息/数据和功能/过程/操作组合成一个称为对象的单元。该对象执行操作(方法/行为/功能/过程)并具有属性。数据库不会包含完整的操作/程序信息集。按照设计,数据库将只包含数据,并且不知道如何使用数据或数据的作用。

【讨论】:

【参考方案5】:

数据库以表格方式存储数据,旨在提高速度。对象要灵活得多;它们可以是树,可以是列表,可以是小部件,或者是一百万种事物中的任何其他东西。它们可以表示表示、数据或结构。有时它们甚至更快(当动态计算一个值而不是从数据库中检索它时更容易)。数据库非常强大且重要,但仅适用于 Web 应用程序执行的一小部分任务。其余的通过对象变得更容易。

【讨论】:

以上是关于既然可以只使用 MySQL 数据库,为啥还要创建对象?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js Q 承诺,既然可以使用 this(),为啥还要使用 defer()?

java里面既然可以用int定义整形变量,为啥还要用Integer,求大神详细解答

既然我们已经有了 StringBuilder,为啥还要使用 StringJoiner?

既然有MySQL了,为什么还要有MongoDB?

既然有MySQL了,为什么还要有MongoDB?

既然有MySQL了,为什么还要有Redis?