天天看點

3. Active Record(活動記錄模式)

Active Record(活動記錄)定義:在計算機領域中,表示編譯器為每個被激活的函數配置設定的記憶體空間。

活動記錄一般都存在棧中。因為棧結構比較簡單,硬體能夠支援。Active Record(中文名:活動記錄)是一種領域模型模式,特點是一個模型類對應關系型資料庫中的一個表,而模型類的一個執行個體對應表中的一行記錄。

Active Record 和 Row Gateway (行記錄入口)十分相似,但前者是領域模型,後者是一種資料源模式。關系型資料庫往往通過外鍵來表述實體關系,Active Record 在資料源層面上也将這種關系映射為對象的關聯和聚集。

Active Record 适合非常簡單的領域需求,尤其在領域模型和資料庫模型十分相似的情況下。如果遇到更加複雜的領域模型結構(例如用到繼承、政策的領域模型),往往需要使用分離資料源的領域模型,結合 Data Mapper (資料映射器)使用。

Active Record 驅動架構一般兼有 ORM 架構的功能,但 Active Record 不是簡單的 ORM,正如和 Row Gateway 的差別。著名的例子是全棧(Full Stack) Web 開發架構 Ruby on Rails ,其預設使用一個純 Ruby 寫成的 Active Record 架構來驅動 MVC 中的模型層。

在 Martin Fowler 的 《企業應用架構模式》 一書中曾詳細叙述了本模式。

以下是著名的 Active Record 驅動架構:

SQLObject(Python)

Ruby on Rails ActiveRecord (Ruby)

Yii Framework ActiveRecord (PHP)

Castle ActiveRecord (.NET)

注釋:

  • 領域模型

是對領域内的概念類或現實世界中對象的可視化表示。又稱概念模型、領域對象模型、分析對象模型。它專注于分析問題領域本身,發掘重要的業務領域概念,并建立業務領域概念之間的關系。業務對象模型(也叫領域模型 domain model)是描述業務用例實作的對象模型。它是對業務角色和業務實體之間應該如何聯系和協作以執行業務的一種抽象。業務對象模型從業務角色内部的觀點定義了業務用例。該模型為産生預期效果确定了業務人員以及他們處理和使用的對象(“業務類和對象”)之間應該具有的靜态和動态關系。它注重業務中承擔的角色及其目前職責。這些模型類的對象組合在一起可以執行所有的業務用例。

繼續閱讀