DDD理論學習系列(4)-- 領域模型

DDD理論學習系列——案例及目錄


1.引言

我們還是先來拆詞理解,領域模型可以拆為“領域”和“模型”二詞。

  • 領域:按照我們之前的文章的理解,DDD中的領域是指軟件系統(tǒng)要解決的問題,如我們的辦公設備公眾號在線商城就是為了解決電商問題,對應的就是電商領域。
  • 模型:百度百科解釋為對于某個實際問題或客觀事物、規(guī)律進行抽象后的一種形式化表達方式。如戶型圖就是實際房屋結(jié)構(gòu)的模型。

把兩個詞結(jié)合起來,我們給領域模型下個定義:領域模型是對我們軟件系統(tǒng)中要解決問題的抽象表達。

這個理解還是很生澀,沒關系,容我娓娓道來。

2.領域模型的來歷和作用

我們知道,軟件開發(fā)過程主要包括:需求分析、概要設計、詳細設計、編碼、測試、軟件交付、驗收、維護。其實簡單來說就是分析、設計和實現(xiàn)。

而傳統(tǒng)的軟件開發(fā)方式中,系統(tǒng)分析、設計和實現(xiàn)三個階段完全脫節(jié),最后開發(fā)出來的軟件不能很好的滿足業(yè)務需求,在未來也不能很好的適應需求變化進行功能演進。

那在DDD中是如何做到呢,下面我們就從以下幾個問題來分析說明。

  1. 怎樣確保最終的軟件設計能滿足客戶需求且適應變化?
    那就要保證系統(tǒng)分析、設計和實現(xiàn)不脫節(jié)。
  2. 那如何做到不脫節(jié)呢?
    如果按照我的理解,那就需要有某一個東西能貫穿整個開發(fā)流程,來銜接分析、設計和實現(xiàn)三個階段。
  3. 那這個東西是什么呢?
    聰明如你,是的,就是我們今天的主題——領域模型。
  4. 那領域模型是如何做到的呢?
    在分析階段,所有的參與人員(領域?qū)<?、設計人員、開發(fā)人員等)對業(yè)務進行需求分析,通過大家的不斷交流討論,提取出業(yè)務規(guī)則和流程中的關鍵詞匯和概念形成通用語言,進而發(fā)現(xiàn)領域概念,隨著大家對領域的認識不斷深入,通用語言的詞匯也會不斷豐富和精準,從而確保了業(yè)務需求的正確表達。
    在設計階段,以通用語言為交流基礎,將發(fā)掘的領域概念進行領域模型設計,以面向?qū)ο蟮乃枷氤橄蟪鰧嶓w,確定實體所對應的方法和屬性,以及實體之間的關系。然后將這些實體和實體之間的關系以某種形式展現(xiàn)出來,形成領域模型。
    在實現(xiàn)階段,開發(fā)人員根據(jù)確立的領域模型進行代碼實現(xiàn),做到代碼與模型的綁定,從而實現(xiàn)了設計和實現(xiàn)階段的銜接。
    通過這樣一種方式,我們實現(xiàn)了語言、模型、代碼三者緊密綁定,確保開發(fā)出來的軟件來準確反應需求并能適應變化。

通過上面對領域模型的來歷和作用的介紹,我們對領域模型就有了一個大致的印象。

3.案例分析

按照上面的理解,領域模型無非就是綜合了系統(tǒng)分析和設計的產(chǎn)物,而這個產(chǎn)物我們正好可以通過UML來展示,下面我們就結(jié)合辦公設備微信公眾號在線商城案例,簡單對銷售子域進行領域模型設計。

銷售子域UML類圖

從該銷售子域的UML類圖中,我們可以看出它包含了銷售子域涉及到相關實體以及實體之間的關系。只要看到這個類圖,我們就知道它涉及的相關概念和流程。所以說上面這張UML類圖是銷售子域的領域模型也不為過。

4.總結(jié)

領域反應的是我們業(yè)務上需要解決的問題,模型是我們針對該問題提出的解決方案。
綜合來說,領域模型就是用來描述我們正在解決的問題和提出的解決方案。

領域模型按照我個人的理解,就是將業(yè)務中涉及到的概念以面向?qū)ο蟮乃枷脒M行抽象,抽象出實體對象,確定實體所對應的方法和屬性,以及實體之間的關系。然后將這些實體和實體之間的關系以某種形式(比如UML、圖形、代碼、文字描述等)展現(xiàn)出來。

以上只是領域模型理論上的理解,但領域模型的設計(領域建模)卻是另一個復雜的話題,擇日再聊。


參考資料:

領域模型,你真的理解的了嗎?
DDD領域驅(qū)動設計基本理論知識總結(jié)
What is the Domain Model in Domain Driven Design? | Culttt

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容