DDD之2領域概念

李福春發表於2020-05-30

image.png

圖中是暗黑領域,非常牛逼的技能。

背景

DDD中出現的名詞: 領域,子領域,核心域,通用域,支撐域,限界上下文,聚合,聚合根,實體,值物件 都是關鍵概念,但是又比較晦澀,在開始DDD之前,搞清楚這些關鍵概念名詞非常的重要。

那它們作用體現在哪裡呢?

file

領域-子領域

領域是: 從事專門活動或者事業的範圍。 
領域的作用是:確定範圍和邊界

DDD研究和解決業務問題過程如下:

file

DDD中的領域是:邊界中要解決的業務問題域

領域就是範圍,範圍有大小之分,所以,DDD中大範圍的叫領域,小範圍的叫子領域;

file

DDD是一種處理高度複雜領域的設計思想,試圖分離技術實現的複雜度。

那麼問題來了?

面對錯綜複雜的業務領域,DDD是如何讓業務從複雜變得簡單,更容易理解? 如何讓技術實現更容易?
**
答:跟自然科學的研究方法類似。

file

可以看看植物的完整生物知識學體系建立過程。

image.png

file

小結:

1,領域可以逐級細分為子領域,每個子領域都有一個知識體系(DDD的領域模型),
2,當所有的子領域的知識體系都建立完畢,就完成了對領域的知識體系建立,即建立了全域的領域模型。

從業務領域來分析對比二者的細分過程是否一致。

保險行業

file

對比結果:不同行業業務模型不一樣,但是領域建模和微服務建設過程基本一樣,核心思想:把問題領域逐步細分為子領域,從而降低業務理解和系統實現的複雜度

核心域-通用域-支撐域

領域可以按照規則細分為子領域,子領域按照重要程度和功能特性有分為3類。即核心域,通用域,支撐域;

file

為什麼要對子領域再進行核心域,通用域,支撐域的劃分?目的是什麼?

公司的IT系統建設過程中,資源和預算有限,在不同型別的子領域有不同的關注度和資源投入。

重要程度跟公司的戰略方向和商業模式有關係,不同的公司,關注點不一樣,即商業模式不同,核心領域的劃分結果不同。

在公司領域細分、建立領域模型和系統建設時,我們就要結合公司戰略重點和商業模式,找到核心域了,且重點關注核心域。

小結

領域的核心思想是逐級細分子領域,來降低業務的理解複雜度和技術實現的複雜度。

核心域,通用域,支撐域的劃分目的是:區分不同的子領域在公司的重要程度和功能屬性,從而提供不同的資源投入策略和關注度。

file

一句話來表達:
領域拆分為子領域就是做減法的過程,降低了業務的理解複雜度和系統實現的複雜度,而核心域,通用域,支撐域的劃分是跟公司的商業模式有關係的,決定了子領域的不同優先順序和資源投入策略。

原創不易,關注誠可貴,轉發價更高!轉載請註明出處,讓我們互通有無,共同進步,歡迎溝通交流。
我會持續分享Java軟體程式設計知識和程式設計師發展職業之路,歡迎關注,我整理了這些年程式設計學習的各種資源,關注公眾號‘李福春持續輸出’,傳送'學習資料'分享給你!

相關文章