日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DDD理论学习系列(4)-- 领域模型

發(fā)布時(shí)間:2023/12/4 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DDD理论学习系列(4)-- 领域模型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.引言

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

  • 領(lǐng)域:按照我們之前的文章的理解,DDD中的領(lǐng)域是指軟件系統(tǒng)要解決的問題,如我們的辦公設(shè)備公眾號(hào)在線商城就是為了解決電商問題,對(duì)應(yīng)的就是電商領(lǐng)域。

  • 模型:百度百科解釋為對(duì)于某個(gè)實(shí)際問題或客觀事物、規(guī)律進(jìn)行抽象后的一種形式化表達(dá)方式。如戶型圖就是實(shí)際房屋結(jié)構(gòu)的模型。

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

這個(gè)理解還是很生澀,沒關(guān)系,容我娓娓道來。

2.領(lǐng)域模型的來歷和作用

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

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

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

  • 怎樣確保最終的軟件設(shè)計(jì)能滿足客戶需求且適應(yīng)變化?
    那就要保證系統(tǒng)分析、設(shè)計(jì)和實(shí)現(xiàn)不脫節(jié)。

  • 那如何做到不脫節(jié)呢?
    如果按照我的理解,那就需要有某一個(gè)東西能貫穿整個(gè)開發(fā)流程,來銜接分析、設(shè)計(jì)和實(shí)現(xiàn)三個(gè)階段。

  • 那這個(gè)東西是什么呢?
    聰明如你,是的,就是我們今天的主題——領(lǐng)域模型。

  • 那領(lǐng)域模型是如何做到的呢?
    在分析階段,所有的參與人員(領(lǐng)域?qū)<摇⒃O(shè)計(jì)人員、開發(fā)人員等)對(duì)業(yè)務(wù)進(jìn)行需求分析,通過大家的不斷交流討論,提取出業(yè)務(wù)規(guī)則和流程中的關(guān)鍵詞匯和概念形成通用語言,進(jìn)而發(fā)現(xiàn)領(lǐng)域概念,隨著大家對(duì)領(lǐng)域的認(rèn)識(shí)不斷深入,通用語言的詞匯也會(huì)不斷豐富和精準(zhǔn),從而確保了業(yè)務(wù)需求的正確表達(dá)。
    在設(shè)計(jì)階段,以通用語言為交流基礎(chǔ),將發(fā)掘的領(lǐng)域概念進(jìn)行領(lǐng)域模型設(shè)計(jì),以面向?qū)ο蟮乃枷氤橄蟪鰧?shí)體,確定實(shí)體所對(duì)應(yīng)的方法和屬性,以及實(shí)體之間的關(guān)系。然后將這些實(shí)體和實(shí)體之間的關(guān)系以某種形式展現(xiàn)出來,形成領(lǐng)域模型。
    在實(shí)現(xiàn)階段,開發(fā)人員根據(jù)確立的領(lǐng)域模型進(jìn)行代碼實(shí)現(xiàn),做到代碼與模型的綁定,從而實(shí)現(xiàn)了設(shè)計(jì)和實(shí)現(xiàn)階段的銜接。
    通過這樣一種方式,我們實(shí)現(xiàn)了語言、模型、代碼三者緊密綁定,確保開發(fā)出來的軟件來準(zhǔn)確反應(yīng)需求并能適應(yīng)變化。

  • 通過上面對(duì)領(lǐng)域模型的來歷和作用的介紹,我們對(duì)領(lǐng)域模型就有了一個(gè)大致的印象。

    3.案例分析

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

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

    4.總結(jié)

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

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

    以上只是領(lǐng)域模型理論上的理解,但領(lǐng)域模型的設(shè)計(jì)(領(lǐng)域建模)卻是另一個(gè)復(fù)雜的話題,擇日再聊。


    參考資料:
    領(lǐng)域模型,你真的理解的了嗎?
    DDD領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)基本理論知識(shí)總結(jié)
    What is the Domain Model in Domain Driven Design? | Culttt

    相關(guān)文章

    • DDD理論學(xué)習(xí)系列(1)-- 通用語言

    • DDD領(lǐng)域驅(qū)動(dòng)之干貨 (一)

    • DDD理論學(xué)習(xí)系列(2)-- 領(lǐng)域

    • DDD理論學(xué)習(xí)系列(3)-- 限界上下文

    • 從事件和DDD入手來構(gòu)建微服務(wù)

    • WeText項(xiàng)目:一個(gè)基于.NET實(shí)現(xiàn)的DDD、CQRS與微服務(wù)架構(gòu)的演示案例

    • 【DDD/CQRS/微服務(wù)架構(gòu)案例】在Ubuntu 14.04.4 LTS中運(yùn)行WeText項(xiàng)目的服務(wù)端

    原文地址:http://www.cnblogs.com/sheng-jie/p/6931622.html


    .NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

    總結(jié)

    以上是生活随笔為你收集整理的DDD理论学习系列(4)-- 领域模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。