領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)并不牽涉到技術(shù)層面的實(shí)現(xiàn)細(xì)節(jié)。
”對(duì)一個(gè)大型系統(tǒng),領(lǐng)域模型的完全統(tǒng)一將是不可行的或者不劃算的。“ --?Eric Evans
DDD的構(gòu)建塊不能盲目地應(yīng)用在一個(gè)無限大的領(lǐng)域模型上,一個(gè)無限大的領(lǐng)域模型也無助于我們開發(fā)出優(yōu)質(zhì)的軟件,限界上下文是分解領(lǐng)域模型的關(guān)鍵。
限界上下文的邊界,也是需求和模型的邊界
如果發(fā)現(xiàn)了了通用語言中的歧義,往往意味著有隱藏的限界上下文要識(shí)別
將新的通用語言和限界上下文加入到團(tuán)隊(duì)中來,這些變化可能會(huì)影響業(yè)務(wù)分析和信息架構(gòu)
? 通過組織架構(gòu)、業(yè)務(wù)模式的分析構(gòu)建出業(yè)務(wù)全景,找到業(yè)務(wù)領(lǐng)域及子領(lǐng)域
? 分析不同業(yè)務(wù)領(lǐng)域的流程、渠道觸點(diǎn)、運(yùn)作模式的異同,來找出業(yè)務(wù)服務(wù);
? 不同業(yè)務(wù)服務(wù)中重疊的子領(lǐng)域/限界上下文,即潛在的基礎(chǔ)服務(wù)
? 限界上下文即潛在的服務(wù)邊界


首先,最大好處就是所有參與者圍繞一個(gè)統(tǒng)一一致的領(lǐng)域模型工作,傳統(tǒng)的分析模型和設(shè)計(jì)模型不再割裂,不管是做設(shè)計(jì)、做分析還是寫代碼、寫文檔,腦海中所構(gòu)建的畫面都是一致的。
第二,DDD 是一個(gè)軟件開發(fā)過程,它顯式地把領(lǐng)域和設(shè)計(jì)放到了軟件開發(fā)的核心,軟件人員和業(yè)務(wù)人員被受到同樣的重視,他們合作來構(gòu)建領(lǐng)域模型,使得軟件的交付質(zhì)量更高且維護(hù)成本更低;
第三,DDD 提出的分層架構(gòu),有效分離了業(yè)務(wù)復(fù)雜度和技術(shù)復(fù)雜度,凸顯了領(lǐng)域模型,使得領(lǐng)域?qū)拥拇a和領(lǐng)域模型保持高度一致;
第四,統(tǒng)一語言非常重要,每個(gè)概念在各自的上下文中是清晰的無歧義的,同時(shí)要控制領(lǐng)域模型的復(fù)雜度,于是 DDD 在戰(zhàn)略上提出了分離子域(問題域空間)和拆分 BC(解決方案空間)的模式,BC 間通過 Context Mapping 來集成;
第五,DDD 在戰(zhàn)術(shù)層面提出了很多模式(聚合,實(shí)體,值對(duì)象,服務(wù),工廠,倉儲(chǔ)),對(duì)領(lǐng)域模型中的元素進(jìn)行了分類,并給出了每類元素在領(lǐng)域模型中的職責(zé)和特征,降低了領(lǐng)域模型的構(gòu)建成本。