天天看點

領域驅動設計(DDD)中的領域模型到底是什麼?

DDD是一種軟體開發模式,目的是為了解構複雜的業務需求,降低不同工種間的溝通障礙,實作結構清晰、可複用、易維護的軟體。

領域驅動設計(DDD)中的領域模型到底是什麼?

《DDD領域驅動設計-貨物運輸系統》技術專欄從實戰出發,通過DDD領域設計知識講解-運作環境搭建-項目案例實戰和源代碼分析,讓初學者快速掌握DDD和微服務應用開發。在技術專欄中,涉及到DDD領域模型設計、CQRS指令查詢職責分離架構、EDA架構、六邊形架構、Spring Boot、Spring Data JPA、Spring Cloud Stream和RabbitMQ等等知識點。歡迎通路和交流。

領域驅動設計(DDD)中的領域模型到底是什麼?

DDD關心的是業務中的領域劃分(戰略設計)和領域模組化(戰術設計),其開發過程不再以資料模型為起點,而是以領域模型為出發點,研發過程如圖所示。

領域驅動設計(DDD)中的領域模型到底是什麼?

領域模型對應的是業務實體,在程式中主要表現為聚合根、實體和值對象,它更加關注業務語義的顯性化表達,而不是資料的存儲和資料之間的關系。

DDD的核心是領域模型,這一方法論可以通俗地了解為先找到業務中的領域模型,以領域模型為中心,驅動項目開發。領域模型的設計精髓在于面向對象分析、對事物的抽象能力,一個領域驅動架構師必然是一個面向對象分析的大師。

我們看看DDD項目中普遍采用的分層架構,如圖所示:

領域驅動設計(DDD)中的領域模型到底是什麼?

可以看到圖中标出的 Domain Layer,這其實就是 DDD 的領域模型,由業務分析而來的業務領域概念到這裡已經變成了應用中的領域對象(Domain Object)。

DDD中的核心是根據領域業務形成領域模型,然後使用領域模型解決業務問題。當你形成領域模型以後,你的領域層(Domain Layer)就已經完成了。其他的應用服務、資源庫都隻是為了更友善地使用領域模型。

繼續閱讀