领域模型(domain model)贫血模型(anaemic domain model)充血模型(rich domain model)
領(lǐng)域模型是領(lǐng)域內(nèi)的概念類或現(xiàn)實(shí)世界中對(duì)象的可視化表示,又稱為概念模型或分析對(duì)象模型,它專注于分析問(wèn)題領(lǐng)域本身,發(fā)掘重要的業(yè)務(wù)領(lǐng)域概念,并建立業(yè)務(wù)領(lǐng)域概念之間的關(guān)系。
貧血模型是指使用的領(lǐng)域?qū)ο笾兄挥衧etter和getter方法(POJO),所有的業(yè)務(wù)邏輯都不包含在領(lǐng)域?qū)ο笾卸欠旁跇I(yè)務(wù)邏輯層。有人將我們這里說(shuō)的貧血模型進(jìn)一步劃分成失血模型(領(lǐng)域?qū)ο笸耆珱](méi)有業(yè)務(wù)邏輯)和貧血模型(領(lǐng)域?qū)ο笥猩倭康臉I(yè)務(wù)邏輯),就不對(duì)此加以區(qū)分了。
充血模型將大多數(shù)業(yè)務(wù)邏輯和持久化放在領(lǐng)域?qū)ο笾?#xff0c;業(yè)務(wù)邏輯(業(yè)務(wù)門面)只是完成對(duì)業(yè)務(wù)邏輯的封裝、事務(wù)和權(quán)限等的處理。
下面兩張圖分別展示了貧血模型和充血模型的分層架構(gòu)。
充血模型
貧血模型下組織領(lǐng)域邏輯通常使用事務(wù)腳本模式,讓每個(gè)過(guò)程對(duì)應(yīng)用戶可能要做的一個(gè)動(dòng)作,每個(gè)動(dòng)作由一個(gè)過(guò)程來(lái)驅(qū)動(dòng)。也就是說(shuō)在設(shè)計(jì)業(yè)務(wù)邏輯接口的時(shí)候,每個(gè)方法對(duì)應(yīng)著用戶的一個(gè)操作,這種模式有以下幾個(gè)特點(diǎn):?
- 它是一個(gè)大多數(shù)開(kāi)發(fā)者都能夠理解的簡(jiǎn)單過(guò)程模型(適合國(guó)內(nèi)的絕大多數(shù)開(kāi)發(fā)者)。
- 它能夠與一個(gè)使用行數(shù)據(jù)入口或表數(shù)據(jù)入口的簡(jiǎn)單數(shù)據(jù)訪問(wèn)層很好的協(xié)作。
- 事務(wù)邊界的顯而易見(jiàn),一個(gè)事務(wù)開(kāi)始于腳本的開(kāi)始,終止于腳本的結(jié)束,很容易通過(guò)代理(或切面)實(shí)現(xiàn)聲明式事務(wù)。然而,事務(wù)腳本模式的缺點(diǎn)也是很多的,隨著領(lǐng)域邏輯復(fù)雜性的增加,系統(tǒng)的復(fù)雜性將迅速增加,程序結(jié)構(gòu)將變得極度混亂。開(kāi)
?
轉(zhuǎn)載于:https://www.cnblogs.com/wade-luffy/p/6074690.html
總結(jié)
以上是生活随笔為你收集整理的领域模型(domain model)贫血模型(anaemic domain model)充血模型(rich domain model)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ORB-SLAM2中的Loop Clos
- 下一篇: ORB-SLAM2中生成金字塔提取FAS