領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)能做什么

一、前言

本篇文章會(huì)簡(jiǎn)要介紹領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)能做什么梅誓,以作為多篇介紹領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)文章的開(kāi)篇恰梢。后面會(huì)使用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的英文縮寫(xiě) DDD。之所以開(kāi)篇介紹 DDD 能做什么梗掰,而不是介紹是什么嵌言,原因是后者答案很容易找,只需 Google 一下及穗。而介紹 DDD 能做什么摧茴,則可以從實(shí)踐的角度介紹學(xué)習(xí)和使用 DDD 的必要性。

整體而言埂陆,DDD 還是一門(mén)偏小眾的技術(shù)苛白,了解者比例不高,更多的人也還沒(méi)有意識(shí)到它的重要性焚虱。這也是寫(xiě)此篇文章的一個(gè)重要原因购裙。

當(dāng)然,雖然全篇不會(huì)介紹什么是 DDD鹃栽,但是一句話(huà)介紹還是少不了:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是一種思想缓窜,用來(lái)指導(dǎo)復(fù)雜的軟件系統(tǒng)的設(shè)計(jì)。正如那本同名書(shū)的副標(biāo)題 ——《軟件核心復(fù)雜性應(yīng)對(duì)之道》谍咆。所以禾锤,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的思想是值得每一位從事軟件系統(tǒng)開(kāi)發(fā),尤其是業(yè)務(wù)系統(tǒng)開(kāi)發(fā)的同學(xué)了解學(xué)習(xí)的摹察。

接下來(lái)簡(jiǎn)單介紹一下 DDD 在軟件開(kāi)發(fā)各方面中所能起到的作用恩掷。

二、DDD 的作用

1. 需求討論

軟件開(kāi)發(fā)的很多問(wèn)題其實(shí)源于需求討論階段供嚎。需求討論不清黄娘、對(duì)需求的誤解,等等克滴,都會(huì)從一開(kāi)始就對(duì)軟件開(kāi)發(fā)造成負(fù)面影響逼争。

那 DDD 如何可以解決這一個(gè)問(wèn)題?DDD 解決這一問(wèn)題的方法的核心是 Ubiquitous Language —— 通用語(yǔ)言劝赔。

DDD 指出誓焦,對(duì)業(yè)務(wù)知識(shí)抽象建模而形成的領(lǐng)域模型應(yīng)當(dāng)成為軟件開(kāi)發(fā)交流過(guò)程中使用的通用語(yǔ)言。對(duì)于同一個(gè)業(yè)務(wù)概念着帽,需求文檔和代碼實(shí)現(xiàn)中應(yīng)該使用同一個(gè)詞語(yǔ)去表述杂伟。不僅表面上的命名需要一致移层,背后的含義也應(yīng)當(dāng)是一致的。

這么做原因在于赫粥,軟件開(kāi)發(fā)過(guò)程中观话,同一個(gè)詞,在產(chǎn)品經(jīng)理和工程師的腦中越平,可能有著不一致的含義和理解频蛔。雖說(shuō)這種不一致一般不至于差出十萬(wàn)八千里,但在復(fù)雜的系統(tǒng)開(kāi)發(fā)中秦叛,即便是細(xì)小的差異晦溪,經(jīng)過(guò)需求的組合以及時(shí)間的積累,最終會(huì)導(dǎo)致比較大的差異书闸。而這種差異會(huì)對(duì)后來(lái)的軟件開(kāi)發(fā)造成越來(lái)越大的麻煩。

而在軟件開(kāi)發(fā)中應(yīng)用 DDD利凑,則可以避免這種問(wèn)題的發(fā)生浆劲。

2. 系統(tǒng)設(shè)計(jì)

現(xiàn)在的業(yè)務(wù)系統(tǒng)的開(kāi)發(fā),使用的技術(shù)有了很大的進(jìn)步哀澈,但是很多系統(tǒng)的設(shè)計(jì)似乎同十幾年前并沒(méi)有太大差別牌借。雖然大家所使用的語(yǔ)言,如 Java割按、Python膨报、Javascript、Go 等适荣,都或多或少的包含了面向?qū)ο蟮奶匦韵帜蟛糠殖绦蜻€是以面向過(guò)程的思維被設(shè)計(jì)。而這會(huì)導(dǎo)致很多系統(tǒng)設(shè)計(jì)層面的問(wèn)題弛矛,例如過(guò)于復(fù)雜够吩、龐大的業(yè)務(wù)層。

我對(duì)系統(tǒng)設(shè)計(jì)的看法是:對(duì)于一個(gè)系統(tǒng)的整體設(shè)計(jì)丈氓,更多的應(yīng)當(dāng)是使用面向?qū)ο蟮乃枷胫苎嫦蜻^(guò)程的思想更多的是應(yīng)用在具體功能設(shè)計(jì)上。

在面向?qū)ο笤O(shè)計(jì)的實(shí)際應(yīng)用方面万俗,DDD 能夠提供非常好的實(shí)踐性指導(dǎo)湾笛。這就是 DDD 在系統(tǒng)設(shè)計(jì)方面的意義。

3. 接口設(shè)計(jì)

在我工作過(guò)的項(xiàng)目中闰歪,接口設(shè)計(jì)常常是一個(gè)難題嚎研。接口不同于代碼實(shí)現(xiàn),代碼實(shí)現(xiàn)可以經(jīng)常修改库倘,但接口一旦發(fā)布就很難修改了嘉赎。所以置媳,接口的設(shè)計(jì)需要非常慎重的考慮。

如何設(shè)計(jì)接口呢公条?在這方面拇囊,REST 是一個(gè)很好的實(shí)踐。當(dāng)然我不是說(shuō) REST 能解決所有的接口設(shè)計(jì)問(wèn)題靶橱,確實(shí)有很多接口不適合用 REST 設(shè)計(jì)寥袭,也有很多接口使用類(lèi)似但非標(biāo)準(zhǔn)的 REST 接口形式設(shè)計(jì)。但我建議关霸,在設(shè)計(jì)接口時(shí)請(qǐng)認(rèn)真考慮 REST 風(fēng)格传黄。

在使用 REST 風(fēng)格設(shè)計(jì)接口時(shí),需要考慮的重要問(wèn)題包括確定系統(tǒng)中有哪些 Resource队寇、這些 Resource 之間的關(guān)系是什么膘掰?

其實(shí) REST 接口中的 Resource 其實(shí)可以與領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)中的實(shí)體互相等同。如果一個(gè)系統(tǒng)設(shè)計(jì)使用了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)佳遣,那確定 Resource识埋,以及它們之間的關(guān)系也就不是難事。自然零渐,設(shè)計(jì)出合理的接口也就變得更加容易窒舟。

五、小結(jié)

大家在討論技術(shù)問(wèn)題時(shí)诵盼,往往會(huì)關(guān)注新和大的話(huà)題惠豺,比如某種新技術(shù)、新框架风宁,或者某某系統(tǒng)的高可用架構(gòu)設(shè)計(jì)洁墙、雙11、大促系統(tǒng)設(shè)計(jì)等等戒财。

這樣的題目顯然更吸引眼球扫俺。雖然這些高大上的內(nèi)容是大家在工作中需要考慮的內(nèi)容,也很重要固翰,但是不應(yīng)因此忽視平時(shí)工作更常遇見(jiàn)的問(wèn)題 —— 如何設(shè)計(jì)好復(fù)雜的業(yè)務(wù)系統(tǒng)狼纬。

如果不能解決好業(yè)務(wù)系統(tǒng)的復(fù)雜性問(wèn)題,那些如高可用骂际、高并發(fā)疗琉、多機(jī)房容災(zāi)等等的高大上的技術(shù)改進(jìn)工作實(shí)施起來(lái)也會(huì)變得異常困難。最重要的是歉铝,如果整個(gè)團(tuán)隊(duì)被業(yè)務(wù)問(wèn)題搞得焦頭爛額時(shí)盈简,還有多少精力和熱情投入到技術(shù)改進(jìn)工作呢?

所以,從上面這個(gè)角度講柠贤,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)解決的不僅是業(yè)務(wù)系統(tǒng)的復(fù)雜性問(wèn)題香浩。

對(duì)于前面講到的內(nèi)容,我會(huì)在后續(xù)的文章中做更詳細(xì)的介紹臼勉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末邻吭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宴霸,更是在濱河造成了極大的恐慌囱晴,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓢谢,死亡現(xiàn)場(chǎng)離奇詭異畸写,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)氓扛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)枯芬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人采郎,你說(shuō)我怎么就攤上這事千所。” “怎么了尉剩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵真慢,是天一觀的道長(zhǎng)毅臊。 經(jīng)常有香客問(wèn)我理茎,道長(zhǎng),這世上最難降的妖魔是什么管嬉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任皂林,我火速辦了婚禮,結(jié)果婚禮上蚯撩,老公的妹妹穿的比我還像新娘础倍。我一直安慰自己,他們只是感情好胎挎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布沟启。 她就那樣靜靜地躺著,像睡著了一般犹菇。 火紅的嫁衣襯著肌膚如雪德迹。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天揭芍,我揣著相機(jī)與錄音胳搞,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肌毅,可吹牛的內(nèi)容都是我干的筷转。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼悬而,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼呜舒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起摊滔,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阴绢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后艰躺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體呻袭,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年腺兴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了左电。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡页响,死狀恐怖篓足,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闰蚕,我是刑警寧澤栈拖,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站没陡,受9級(jí)特大地震影響涩哟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盼玄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一贴彼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧埃儿,春花似錦器仗、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至剃斧,卻和暖如春轨香,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悯衬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工弹沽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留檀夹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓策橘,卻偏偏與公主長(zhǎng)得像炸渡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丽已,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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

  • 10月有幸參加ThoughtWorks組織的《領(lǐng)域驅(qū)動(dòng)的微服務(wù)架構(gòu)設(shè)計(jì)實(shí)戰(zhàn)工作坊》培訓(xùn)課程蚌堵,盡管課程時(shí)間只有短短一...
    李戩plutocracy閱讀 7,056評(píng)論 4 36
  • 有位朋友最近在為企業(yè)做領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(Domain Driven Design)內(nèi)訓(xùn)時(shí)吼畏,遇到一位資深學(xué)員向他抱怨該技...
    MagicBowen閱讀 18,659評(píng)論 8 66
  • 開(kāi)心有時(shí)也很容易啊,比如剛到車(chē)站車(chē)就來(lái)了嘁灯,隨機(jī)播放正好是最近喜歡的歌泻蚊,還有今晚的風(fēng)真舒服。晚安丑婿,好夢(mèng)性雄。
    大益閱讀 220評(píng)論 0 0
  • (二)似曾相識(shí)未謀面,一見(jiàn)傾心網(wǎng)結(jié)緣 中國(guó)水仙花屬石蔥科羹奉、水仙屬多年生草本植物秒旋,鱗莖生得頗象洋蔥、大蒜诀拭、故六朝時(shí)稱(chēng)...
    昊水長(zhǎng)天閱讀 607評(píng)論 0 5
  • 摳圖法 打開(kāi)照片—復(fù)制圖層—快速選擇工具選擇背景—編輯菜單—填充—前景色
    南下雙魚(yú)閱讀 312評(píng)論 0 2