Word插入圖片后,打印預(yù)覽正常,但是打印出來圖片不全,是什么原因?
917
2025-03-31
前面一篇文章講到,DDD 概念理解起來有點抽象,這個有點像設(shè)計模式,感覺很有用,但是自己開發(fā)的時候又不知道怎么應(yīng)用到代碼里面,或者生搬硬套后自己看起來都很別扭。
DDD總體結(jié)構(gòu)分為四層: Infrastructure(基礎(chǔ)實施層),Domain(領(lǐng)域?qū)?,Application(應(yīng)用層),Interfaces(表示層,也叫用戶界面層或是接口層)。
而 DDD 的戰(zhàn)略設(shè)計主要包括領(lǐng)域/子域、通用語言、限界上下文和架構(gòu)風(fēng)格等概念。
現(xiàn)實世界中,領(lǐng)域包含了問題域和解系統(tǒng)。一般認(rèn)為軟件是對現(xiàn)實世界的部分模擬。在DDD中,解系統(tǒng)可以映射為一個個限界上下文,限界上下文就是軟件對于問題域的一個特定的、有限的解決方案。
在日常開發(fā)中,我們通常會將一個大型的軟件系統(tǒng)拆分成若干個子系統(tǒng)。這種劃分有可能是基于架構(gòu)方面的考慮,也有可能是基于基礎(chǔ)設(shè)施的。但是在DDD中,我們對系統(tǒng)的劃分是基于領(lǐng)域的,也即是基于業(yè)務(wù)的。
一個由顯示邊界限定的特定職責(zé)。領(lǐng)域模型便存在于這個邊界之內(nèi)。在邊界內(nèi),每一個模型概念,包括它的屬性和操作,都具有特殊的含義。
將一個限界上下文中的所有概念,包括名詞、動詞和形容詞全部集中在一起,我們便為該限界上下文創(chuàng)建了一套通用語言。通用語言是一個團(tuán)隊所有成員交流時所使用的語言,業(yè)務(wù)分析人員、編碼人員和測試人員都應(yīng)該直接通過通用語言進(jìn)行交流。
對于上文中提到的各個子域之間的集成問題,其實也是限界上下文之間的集成問題。在集成時,我們主要關(guān)心的是領(lǐng)域模型和集成手段之間的關(guān)系。比如需要與一個REST資源集成,你需要提供基礎(chǔ)設(shè)施(比如Spring 中的RestTemplate),但是這些設(shè)施并不是你核心領(lǐng)域模型的一部分,你應(yīng)該怎么辦呢?答案是防腐層,該層負(fù)責(zé)與外部服務(wù)提供方打交道,還負(fù)責(zé)將外部概念翻譯成自己的核心領(lǐng)域能夠理解的概念。當(dāng)然,防腐層只是限界上下文之間眾多集成方式的一種,另外還有共享內(nèi)核、開放主機服務(wù)等,具體細(xì)節(jié)請參考《實現(xiàn)領(lǐng)域驅(qū)動設(shè)計》原書。限界上下文之間的集成關(guān)系也可以理解為是領(lǐng)域概念在不同上下文之間的映射關(guān)系,因此,限界上下文之間的集成也稱為上下文映射圖。
小結(jié)
本文通過Spring Web應(yīng)用的瑕疵引出改善的措施,隨后介紹了領(lǐng)域驅(qū)動開發(fā)的相關(guān)概念和設(shè)計策略。在前面講了這么多概念,想必讀者一定有了解如何落地領(lǐng)域驅(qū)動設(shè)計的沖動。筆者將在下一篇文章介紹領(lǐng)域模型的幾種類型和DDD的具體實踐案例。
Spring Web 應(yīng)用的最大瑕疵
領(lǐng)域驅(qū)動設(shè)計(DDD)
Spring 面向?qū)ο缶幊?/p>
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。