領(lǐng)域模型實(shí)現(xiàn)模式
領(lǐng)域模型
領(lǐng)域模型是一個面向?qū)ο竽P筒窖停瑫r囊括了行為和數(shù)據(jù)从隆。該模式基于沒有數(shù)據(jù)庫前提的。
優(yōu)點(diǎn):創(chuàng)建了現(xiàn)實(shí)領(lǐng)域的業(yè)務(wù)對象缭裆,易于修改键闺。
缺點(diǎn):上手成本高,開發(fā)人員需要理解領(lǐng)域知識澈驼。忽略了持久化并需要依賴映射器和其他抽象方式保留和檢索業(yè)務(wù)實(shí)體辛燥。
適用范圍:擁有豐富業(yè)務(wù)邏輯的復(fù)雜領(lǐng)域,且非常重要缝其,或者由于持續(xù)投入而經(jīng)常變化的繼而需要明確的某部分建模挎塌。
事物腳本
每個程序包都包含所有需要的業(yè)務(wù)邏輯,以完成工作流/業(yè)務(wù)規(guī)則和校驗(yàn)檢查内边。
優(yōu)點(diǎn):邏輯部分都放在一個操作里面榴都,開發(fā)人員易于掌握
缺點(diǎn):邏輯一復(fù)雜,事物腳本模式就很難管理漠其,會出現(xiàn)過度重復(fù)
適用范圍:領(lǐng)域中具有很少邏輯/不具備邏輯的部分嘴高。
表模塊/活動記錄
業(yè)務(wù)模型和數(shù)據(jù)模型一一對應(yīng)竿音,單個對象表示數(shù)據(jù)庫中的一張表
優(yōu)點(diǎn):業(yè)務(wù)模型和數(shù)據(jù)庫模型不會出現(xiàn)匹配錯誤
缺點(diǎn):業(yè)務(wù)模型和數(shù)據(jù)庫模型發(fā)生分歧時,需要重構(gòu)
適用范圍:數(shù)據(jù)庫驅(qū)動的設(shè)計(jì)/業(yè)務(wù)模型和數(shù)據(jù)模型一一對應(yīng)的情況
貧血領(lǐng)域模型
缺點(diǎn):領(lǐng)域?qū)ο笾胁话魏涡袨樗┩裕I(lǐng)域服務(wù)會承擔(dān)代碼更具程序性風(fēng)格的角色
優(yōu)點(diǎn):可以轉(zhuǎn)換成領(lǐng)域模型
適用范圍:領(lǐng)域模型中具有較少邏輯/團(tuán)隊(duì)不熟悉面向?qū)ο笳Z言谍失。
函數(shù)式編程
函數(shù)式編程,將行為分組成聚合(領(lǐng)域概念)并應(yīng)用于純粹的不可變的數(shù)據(jù)結(jié)構(gòu)(領(lǐng)域概念)莹汤。關(guān)注的是領(lǐng)域事件。
識別限界上下文
- 領(lǐng)域的專業(yè)術(shù)語和概念中存在歧義
- 要與子域和業(yè)務(wù)能力保持一致
- 團(tuán)隊(duì)組織和實(shí)際位置
- 遺留代碼庫
- 第三方集成
上下文映射
-
防腐層
-
共享內(nèi)核
-
開放宿主服務(wù)
分道揚(yáng)鑣 - 人工處理/用戶接口處理
合作關(guān)系 - 上下文集成上需要協(xié)作颠印,發(fā)布最好一致
上下游關(guān)系
-
客戶和供應(yīng)商 - 協(xié)作性很強(qiáng)顧客參與供應(yīng)商
- 遵從 - 沒有協(xié)作纲岭,與外部供應(yīng)商集成