DDD領域驅動設計

語言: CN / TW / HK

領域驅動設計的戰略核心即是將問題域與應用架構相剝離,將業務語義顯現化,把原先晦澀難懂的業務算法邏輯,通過領域對象(Domain Object),統一語言(Ubiquitous Language)轉化為領域概念清晰的顯性化表達出來。

1、統一語言,軟件的開發人員/使用人員都使用同一套語言,即對某個概念,名詞的認知是統一的,建立清晰的業務模型,形成統一的業務語義。將模型作為語言的支柱。確保團隊在內部的所有交流中,代碼中,畫圖,寫東西,特別是講話的時候都要使用這種語言。例如賬號,轉賬,透支策略,這些都是非常重要的領域概念,如果這些命名都和我們日常討論以及 PRD 中的描述保持一致,將會極大提升代碼的可讀性,減少認知成本。。比如不再會有人在會議中對“工單”、“審核單”、“表單”而反覆確認含義了,DDD 的模型建立不會被 DB 所綁架。

2、面向領域,業務語義顯性化,以領域去思考問題,而不是模塊。將隱式的業務邏輯從一推 if-else 裏面抽取出來,用通用語言去命名、去寫代碼、去擴展,讓其變成顯示概念;很多重要的業務概念,按照事務腳本的寫法,其含義完全淹沒在代碼邏輯中沒有突顯出來。

3、職責劃分,根據實際業務合理劃分模型,模型之間依賴結構和邊界更加清晰,避免了混亂的依賴關係,進而增加可讀性、可維護性;單一職責,模型只關注自身的本職工作,避免“越權”而導致混亂的調用關係。通過建模,更好的表達現實世界中的複雜業務,隨着時間的發展,不斷增加系統對實際業務的沉澱,也將更好的通過清晰的代碼描述業務邏輯,模型的內聚增加了系統的高度模塊化,提升代碼的可重用性,對比傳統三層模式中,很有可能大量重複的功能散落在各個 Service 內部。

如若轉載,請註明出處:開源字節   https://sourcebyte.cn/article/227.html