缩写 CRUD(创建、读取、更新、删除)在面向对象编程中很常见。作为 OOP 的新手,我想知道此功能的上下文。当使用 CRUD 方法构建类时,这些方法应该创建、读取、更新、删除对象属性,还是应该对数据库数据执行这些操作,还是某种组合?
解释 CRUD:
面向对象编程和数据库之间的联系是数据库条目在相当基本的意义上是对象的基本思想。数据库中的每个条目都有各种字段,这些字段直接对应于面向对象语言中对象的字段。
CRUD 与面向对象编程无关。通常都是关于数据库操作的。有时它也用于 HTTP 请求。
来自维基百科
Operation SQL HTTP
Create INSERT PUT / POST
Read (Retrieve) SELECT GET
Update (Modify) UPDATE PUT / PATCH
Delete (Destroy) DELETE DELETE
您在 OOP 环境中听说过它,因为与您共度时光的这些人使用 Java 等 OOP 语言。
作为证据,您可以在这里找到 Haskell 中的 CRUD 实现
您不应该使用 CRUD 方法构建类。
您应该使用代表在建模域上下文中表示的对象的“行为”的方法来构建一个类。使用像 CRUD 这样的通用方法构建一个类将是一种 OOP 设计味道。 举个例子,这是错误的(so so so error)
class Person(object):
def __init__(name, age, location)
self.name = name
self.age = age
self.location = location
def get_name(self):
return self.name
def update_name(self, new_name):
self.name = new_name
def delete_name(self):
self.name = None
这些方法与人
的行为无关。它将 Person 变成了一个愚蠢的数据对象,这与面向对象设计试图做的相反。 如果您的人员对象必须与数据库对话才能持久保存,则应在公共接口中隐藏此功能。更好的选择是首先不将对象绑定到数据库,在域中使用普通旧对象并使用其他方法写入数据库。
CRUD 也是声明变量的基本操作。例如,在 C# 中,您可以声明一个变量
List<Of T>
,然后在将其上传到数据库之前对其执行 CRUD 操作。