当前位置:编程学习 > 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 
    补充:Web开发 , php ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,