1. 程式人生 > >什麼是領域模型(domain model)?貧血模型(anaemic domain model) 和充血模型(rich domain model)有什麼區別

什麼是領域模型(domain model)?貧血模型(anaemic domain model) 和充血模型(rich domain model)有什麼區別

http://blog.csdn.net/helloboat/article/details/51208128

領域模型是領域內的概念類或現實世界中物件的視覺化表示,又稱為概念模型或分析物件模型,它專注於分析問題領域本身,發掘重要的業務領域概念,並建立業務領域概念之間的關係。貧血模型是指使用的領域物件中只有setter和getter方法(POJO),所有的業務邏輯都不包含在領域物件中而是放在業務邏輯層。有人將我們這裡說的貧血模型進一步劃分成失血模型(領域物件完全沒有業務邏輯)和貧血模型(領域物件有少量的業務邏輯),我們這裡就不對此加以區分了。充血模型將大多數業務邏輯和持久化放在領域物件中,業務邏輯(業務門面)只是完成對業務邏輯的封裝、事務和許可權等的處理。下面兩張圖分別展示了貧血模型和充血模型的分層架構。
貧血模型 充血模型 貧血模型下組織領域邏輯通常使用事務指令碼模式,讓每個過程對應使用者可能要做的一個動作,每個動作由一個過程來驅動。也就是說在設計業務邏輯介面的時候,每個方法對應著使用者的一個操作,這種模式有以下幾個有點:
  1. 它是一個大多數開發者都能夠理解的簡單過程模型(適合國內的絕大多數開發者)。
  2. 它能夠與一個使用行資料入口或表資料入口的簡單資料訪問層很好的協作。
  3. 事務邊界的顯而易見,一個事務開始於指令碼的開始,終止於指令碼的結束,很容易通過代理(或切面)實現宣告式事務。
然後,事務指令碼模式的缺點也是很多的,隨著領域邏輯複雜性的增加,系統的複雜性將迅速增加,程式結構將變得極度混亂。