程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 數據源架構模式之活動記錄

數據源架構模式之活動記錄

編輯:關於PHP編程

  【活動記錄的意圖】

  一個對象,它包裝數據表或視圖中某一行,封裝數據庫訪問,並在這些數據上增加了領域邏輯。

  【活動記錄的適用場景】

  適用於不太復雜的領域邏輯,如CRUD操作等。

  【活動記錄的運行機制】

  對象既有數據又有行為。其使用最直接的方法,將數據訪問邏輯置於領域對象中。

  活動記錄的本質是一個領域模型,這個領域模型中的類和基數據庫中的記錄結構應該完全匹配,類的每個域對應表的每一列。

  一般來說,活動記錄包括如下一些方法:

  1、由數據行構造一個活動記錄實例;

  2、為將來對表的插入構造一個新的實例;

  3、用靜態查找方法來包裝常用的SQL查詢和返回活動記錄;

  4、更新數據庫並將活動記錄中的數據插入數據庫;

  5、獲取或設置域;

  6、實現部分業務邏輯。

  【活動記錄的優點和缺點】

  優點:

  1、簡單,容易創建並且容易理解。

  2、在使用事務腳本時,減少代碼復制。

  3、可以在改變數據庫結構時不改變領域邏輯。

  4、基於單個活動記錄的派生和測試驗證會很有效。

  缺點:

  1、沒有隱藏關系數據庫的存在。

  2、僅當活動記錄對象和數據庫中表直接對應時,活動記錄才會有效。

  3、要求對象的設計和數據庫的設計緊耦合,這使得項目中的進一步重構很困難

  【活動記錄與其它模式】

  數據源架構模式之行數據入口:活動記錄與行數據入口十分類似。二者的主要差別是行數據入口 僅有數據庫訪問而活動記錄既有數據源邏輯又有領域邏輯。

  【活動記錄的PHP示例】

 

  1. <?php  
  2.    
  3. /**  
  4.  * 企業應用架構 數據源架構模式之活動記錄 2010-10-17 sz  
  5.  * @author phppan.p#gmail.com  http://www.phppan.com  
  6.  * 哥學社成員(http://www.blog-brother.com/)  
  7.  * @package architecture  
  8.  */ 
  9.    
  10. /**  
  11.  * 定單類  
  12.  */ 
  13. class Order {  
  14.    
  15.     /**  
  16.      *  定單ID  
  17.      * @var <type>  
  18.      */ 
  19.     private $_order_id;  
  20.    
  21.     /**  
  22.      * 客戶ID  
  23.      * @var <type>  
  24.      */ 
  25.     private $_customer_id;  
  26.    
  27.     /**  
  28.      * 定單金額  
  29.      * @var <type>  
  30.      */ 
  31.     private $_amount;  
  32.    
  33.     public function __construct($order_id, $customer_id, $amount) {  
  34.         $this->_order_id = $order_id;  
  35.         $this->_customer_id = $customer_id;  
  36.         $this->_amount = $amount;  
  37.     }  
  38.    
  39.     /**  
  40.      * 實例的刪除操作  
  41.      */ 
  42.     public function delete() {  
  43.         $sql = "DELETE FROM Order SET WHERE order_id = " . $this->_order_id . " AND customer_id = "  . $this->_customer_id;  
  44.         return DB::query($sql);  
  45.     }  
  46.    
  47.     /**  
  48.      * 實例的更新操作  
  49.      */ 
  50.     public function update() {  
  51.     }  
  52.    
  53.     /**  
  54.      * 插入操作  
  55.      */ 
  56.     public 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved