2014-03-02 36 views
1

首字母縮略詞CRUD(創建,讀取,更新,刪除)在面向對象編程中很常見。相對於OOP來說相對陌生,我想知道這個功能的上下文。在使用CRUD方法構建類時,這些方法應該是創建,讀取,更新,刪除對象屬性,還是應該對數據庫數據執行這些操作?還是某些組合?CRUD的含義

+5

CRUD完全獨立於OOP。這就像比較一條船和一根香蕉。 – Mik378

+0

Ack。相反,它與數據庫等有關 – deviantfan

回答

1

解釋的CRUD:

  • 創建:這部分指的是「創造」供你使用,或增加新的記錄到dabase新的數據對象的構造函數和工廠方法。
  • 閱讀:這些是你的代碼中的getter方法。既然你不應該在類之外暴露內部變量,你提供了getter,所以其他代碼可以獲得關於對象狀態的信息。這也讀取各種數據庫條目的字段。
  • 更新:這些是setter方法,對於其他代碼也需要能夠修改對象或數據庫條目的實例,getter方法是免費的。
  • destroy:這是指對象的析構函數,它釋放所有分配的資源並確保對象可以乾淨地處理,或從數據庫中刪除記錄。

面向對象編程和數據庫之間的連接是數據庫條目在相當基本的意義上是對象的基本思想。數據庫中的每個條目都有各種字段,這些字段直接對應於面嚮對象語言中的對象字段。

2

CRUD與面向對象編程無關。通常都是關於數據庫操作。它有時也用於HTTP請求。

wikipedia

Operation   SQL  HTTP 
Create    INSERT PUT/POST 
Read (Retrieve)  SELECT GET 
Update (Modify)  UPDATE PUT/PATCH 
Delete (Destroy) DELETE DELETE 

你,因爲這些人你花時間與使用OOP語言如Java面向對象的上下文聽到。

爲了證明這一點,你可以找到a CRUD implementation in Haskell here

0

大多數時候,我會用CRUD對存儲在數據庫中的數據。我將親自編寫幾個存儲過程來執行這些功能。

CRUD也是聲明變量的基本操作。例如在C#中,您可以聲明變量List<Of T>,然後在將它上載到數據庫之前對其執行CRUD操作。

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變成一個愚蠢的數據對象,這與面向對象的設計嘗試做的事情相反。

如果您的個人對象必須與數據庫交談以堅持其自身,則應該從公共界面隱藏此功能。而更好的選擇是不首先將對象綁定到數據庫,在您的域中使用Plain Old Objects並使用其他方法寫入數據庫。