DDD理論學(xué)習(xí)系列(4)-- 領(lǐng)域模型

DDD理論學(xué)習(xí)系列——案例及目錄


1.引言

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

  • 領(lǐng)域:按照我們之前的文章的理解,DDD中的領(lǐng)域是指軟件系統(tǒng)要解決的問(wèn)題,如我們的辦公設(shè)備公眾號(hào)在線商城就是為了解決電商問(wèn)題袱巨,對(duì)應(yīng)的就是電商領(lǐng)域祥国。
  • 模型:百度百科解釋為對(duì)于某個(gè)實(shí)際問(wèn)題或客觀事物昵观、規(guī)律進(jìn)行抽象后的一種形式化表達(dá)方式。如戶(hù)型圖就是實(shí)際房屋結(jié)構(gòu)的模型舌稀。

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

這個(gè)理解還是很生澀壁查,沒(méi)關(guān)系觉至,容我娓娓道來(lái)。

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

我們知道睡腿,軟件開(kāi)發(fā)過(guò)程主要包括:需求分析语御、概要設(shè)計(jì)峻贮、詳細(xì)設(shè)計(jì)、編碼应闯、測(cè)試纤控、軟件交付、驗(yàn)收碉纺、維護(hù)嚼黔。其實(shí)簡(jiǎn)單來(lái)說(shuō)就是分析、設(shè)計(jì)和實(shí)現(xiàn)惜辑。

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

那在DDD中是如何做到呢抵卫,下面我們就從以下幾個(gè)問(wèn)題來(lái)分析說(shuō)明狮荔。

  1. 怎樣確保最終的軟件設(shè)計(jì)能滿(mǎn)足客戶(hù)需求且適應(yīng)變化?
    那就要保證系統(tǒng)分析介粘、設(shè)計(jì)和實(shí)現(xiàn)不脫節(jié)殖氏。
  2. 那如何做到不脫節(jié)呢?
    如果按照我的理解姻采,那就需要有某一個(gè)東西能貫穿整個(gè)開(kāi)發(fā)流程雅采,來(lái)銜接分析、設(shè)計(jì)和實(shí)現(xiàn)三個(gè)階段慨亲。
  3. 那這個(gè)東西是什么呢婚瓜?
    聰明如你,是的刑棵,就是我們今天的主題——領(lǐng)域模型巴刻。
  4. 那領(lǐng)域模型是如何做到的呢?
    在分析階段蛉签,所有的參與人員(領(lǐng)域?qū)<液恪⒃O(shè)計(jì)人員、開(kāi)發(fā)人員等)對(duì)業(yè)務(wù)進(jìn)行需求分析碍舍,通過(guò)大家的不斷交流討論柠座,提取出業(yè)務(wù)規(guī)則和流程中的關(guān)鍵詞匯和概念形成通用語(yǔ)言,進(jìn)而發(fā)現(xiàn)領(lǐng)域概念乒验,隨著大家對(duì)領(lǐng)域的認(rèn)識(shí)不斷深入愚隧,通用語(yǔ)言的詞匯也會(huì)不斷豐富和精準(zhǔn)蒂阱,從而確保了業(yè)務(wù)需求的正確表達(dá)锻全。
    在設(shè)計(jì)階段狂塘,以通用語(yǔ)言為交流基礎(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ái)泪漂,形成領(lǐng)域模型。
    在實(shí)現(xiàn)階段歪泳,開(kāi)發(fā)人員根據(jù)確立的領(lǐng)域模型進(jìn)行代碼實(shí)現(xiàn)萝勤,做到代碼與模型的綁定,從而實(shí)現(xiàn)了設(shè)計(jì)和實(shí)現(xiàn)階段的銜接呐伞。
    通過(guò)這樣一種方式敌卓,我們實(shí)現(xiàn)了語(yǔ)言、模型伶氢、代碼三者緊密綁定趟径,確保開(kāi)發(fā)出來(lái)的軟件來(lái)準(zhǔn)確反應(yīng)需求并能適應(yīng)變化。

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

3.案例分析

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

銷(xiāo)售子域UML類(lèi)圖

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

4.總結(jié)

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

領(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ái)。

以上只是領(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市伟骨,隨后出現(xiàn)的幾起案子饮潦,更是在濱河造成了極大的恐慌,老刑警劉巖携狭,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件害晦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡暑中,警方通過(guò)查閱死者的電腦和手機(jī)壹瘟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鳄逾,“玉大人稻轨,你說(shuō)我怎么就攤上這事〉癜迹” “怎么了殴俱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)枚抵。 經(jīng)常有香客問(wèn)我线欲,道長(zhǎng),這世上最難降的妖魔是什么汽摹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任李丰,我火速辦了婚禮,結(jié)果婚禮上逼泣,老公的妹妹穿的比我還像新娘趴泌。我一直安慰自己,他們只是感情好拉庶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布嗜憔。 她就那樣靜靜地躺著,像睡著了一般氏仗。 火紅的嫁衣襯著肌膚如雪吉捶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音呐舔,去河邊找鬼币励。 笑死,一個(gè)胖子當(dāng)著我的面吹牛滋早,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播砌们,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼杆麸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了浪感?” 一聲冷哼從身側(cè)響起昔头,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎影兽,沒(méi)想到半個(gè)月后揭斧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峻堰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年讹开,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捐名。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旦万,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镶蹋,到底是詐尸還是另有隱情成艘,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布贺归,位于F島的核電站淆两,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拂酣。R本人自食惡果不足惜秋冰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望婶熬。 院中可真熱鬧丹莲,春花似錦、人聲如沸尸诽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)性含。三九已至洲赵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叠萍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工芝发, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苛谷。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓辅鲸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親腹殿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子独悴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容