首字母缩略词CRUD(创建,读取,更新,删除)在面向对象编程中很常见。作为OOP的新手,我想知道这个功能的背景。使用CRUD方法构建类时,这些方法是应该创建,读取,更新,删除对象属性还是应该对数据库数据或某些组合执行这些操作?
答案 0 :(得分:2)
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语言。
作为证据,您可以找到a CRUD implementation in Haskell here
答案 1 :(得分:1)
解释CRUD:
面向对象编程和数据库之间的联系是数据库条目在相当基本的意义上是对象的基本思想。数据库中的每个条目都有各种字段,这些字段直接对应于面向对象语言中对象的字段。
答案 2 :(得分:1)
您不应该使用CRUD方法构建类。
您应该使用表示在建模域的上下文中表示的对象的行为的方法构建一个类。使用像CRUD这样的通用方法构建一个类将是一个OOP设计气味。
例如,这是错误的(如此错误)
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 的行为无关。它将Person变成了一个愚蠢的数据对象,这与面向对象的设计试图做的相反。
如果您的person对象必须与数据库通信以保持自身,则应该从公共接口隐藏此功能。更好的选择是不首先将对象绑定到数据库,在域中使用Plain Old Objects并使用其他方法写入数据库。
答案 3 :(得分:0)
大多数情况下,我会对存储在数据库中的数据使用crud。我将亲自编写几个存储过程来执行这些功能。
CRUD也是声明变量的基本操作。例如,在C#中,您可以声明变量List<Of T>
,然后在将其上传到数据库之前对其执行CRUD操作。