溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

什么是領(lǐng)域驅(qū)動設(shè)計

發(fā)布時間:2021-10-12 10:33:15 來源:億速云 閱讀:173 作者:iii 欄目:編程語言

這篇文章主要介紹“什么是領(lǐng)域驅(qū)動設(shè)計”,在日常操作中,相信很多人在什么是領(lǐng)域驅(qū)動設(shè)計問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”什么是領(lǐng)域驅(qū)動設(shè)計”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

§ 0x01 什么是領(lǐng)域驅(qū)動設(shè)計

思考: 理解領(lǐng)域domain,就要從業(yè)務(wù)說起。

軟件設(shè)計中常聽到的一個詞是:業(yè)務(wù)。日常開發(fā)中,也有同事會說,要熟悉業(yè)務(wù); xxx對業(yè)務(wù)不熟悉。 業(yè)務(wù)是什么呢?

業(yè)務(wù)應(yīng)該是一個公司或者一個產(chǎn)品獨(dú)有的核心活動、流程。 云計算而言:對外提供池化的計算、存儲、網(wǎng)絡(luò)能力。淺顯一點(diǎn)的是:虛擬機(jī)的全生命周期管理。

領(lǐng)域是指跟業(yè)務(wù)強(qiáng)相關(guān)的那部分知識,流程。

領(lǐng)域驅(qū)動的核心思想是,以業(yè)務(wù)為核心。向上對接應(yīng)用層(Application),向下對接IO層(Repositroy)。比起傳統(tǒng)的分層模型來說,它的粒度更細(xì),要求更高了。傳統(tǒng)的分層模型在小型軟件場景下可以正常發(fā)揮效用,但大部分人去實(shí)施時,經(jīng)常會出現(xiàn)2個問題。

  1. 業(yè)務(wù)層的邏輯跑到了應(yīng)用層,應(yīng)用層非常臃腫;

  2. 業(yè)務(wù)層的邏輯跑到了驅(qū)動層(IO層),導(dǎo)致產(chǎn)品對驅(qū)動層的依賴過強(qiáng),對后續(xù)重構(gòu)維護(hù)造成災(zāi)難性的影響。

§ 0x02 模型

2.1 模型的意義

模型這種知識形式對知識進(jìn)行了選擇性的簡化和有意的結(jié)構(gòu)化。

領(lǐng)域的核心就是模型。文中對模型的意義進(jìn)行了定義。這跟大家處理問題時的方法是一樣的,忽略將要矛盾關(guān)注主要矛盾。模型大家說的最多的,就是物理模型、數(shù)學(xué)模型。比如“質(zhì)點(diǎn)”,現(xiàn)實(shí)世界中是不存在的,但這樣的模型對于解釋物理現(xiàn)象,分析物體受力是非常有意義的,沒有質(zhì)點(diǎn)時,你對一個物體施加一個力,要關(guān)心這個力的作用位置,現(xiàn)實(shí)世界中作用的位置不同,導(dǎo)致不同的結(jié)果。

一個平放的立方塊,對側(cè)面靠近底部位置施加一個很大的力,因?yàn)榱氐淖饔?,這個立方塊會前后翻轉(zhuǎn)。不是牛頓第二定律里描述的,它會加速直線向前運(yùn)行。

什么是領(lǐng)域驅(qū)動設(shè)計

這里又要提一個抽象。抽象就是建模的手段。通過舍棄一些不必要細(xì)節(jié),得到一個反應(yīng)我們關(guān)注問題的東西,這個東西就是模型了。

2.2 模型對于領(lǐng)域的意義

模型是設(shè)計實(shí)現(xiàn)的總結(jié)。

  1. 模型直接影響設(shè)計;

  2. 模型是溝通語言;

  3. 模型是濃縮的知識。

思考:

  1. 模型影響設(shè)計 模型的完備性是最終衡量設(shè)計是否滿足需求的標(biāo)準(zhǔn),知識的傳遞應(yīng)該是:需求變動影響模型,模型變動影響設(shè)計。技術(shù)專家一般不會直接去看代碼判斷你的實(shí)現(xiàn)是否有問題,但如果給出了模型,專家可以快速看出你的設(shè)計是否存在問題。

  2. 模型是溝通語言 模型是設(shè)計編碼溝通的基礎(chǔ),可以把問題局限在大家都熟悉的一個范圍中,提高溝通的效率。

  3. 模型是濃縮的知識 這一點(diǎn)與2的描述有點(diǎn)重復(fù)。感覺可以合在一起。

補(bǔ)充: 模型可以幫助新加入的成員,快速的理解設(shè)計??吹胶芏嚅_源項目都會在文檔中描述設(shè)計,但很多項目沒有一個合適的模型定義,導(dǎo)致理解與上手比較困難。

2.3 軟件的核心

軟件的核心是提供為用戶解決領(lǐng)域相關(guān)問題的能力。

用白話說,就是為了實(shí)現(xiàn)需求。
這部分作者提出了一個比較普遍的問題:大部分編碼人員對于建模技巧和業(yè)務(wù)知識沒有興趣,這恰恰是實(shí)現(xiàn)實(shí)現(xiàn)用戶需求最核心的技術(shù)要求。 進(jìn)一步的原因是“技術(shù)人員喜歡比較直接的,能提升自己技術(shù)水平的問題。”

這個原因有2層意思。一個是普通的心理現(xiàn)象,人都喜歡直接看得見的東西;比如年輕時喜歡說愛情,非誰誰不娶(嫁),但最終面對現(xiàn)實(shí)時,還是錢重要。因?yàn)閻矍槭浅橄蟮模X是具象的可以看得到的。對于建模這種抽象的東西,完全沒有查一個BUG,學(xué)習(xí)一門新語言來得實(shí)在。

另外一個是,當(dāng)你想跳槽時。你說你會領(lǐng)域建模,可能面試官對于這部分也沒有什么積累,不能判斷出你的技術(shù)水平;即使是ta恰好也懂,在面試的時間內(nèi)也很難考查出你的領(lǐng)域能力有多強(qiáng)。相反,問問一些語言的特性,或者操作系統(tǒng)相關(guān)的基礎(chǔ)知識會比較容易判斷你的水平。也就是說抽象的東西沒有市場。

大多數(shù)混亂的軟件領(lǐng)域其實(shí)是一項充滿樂趣的技術(shù)挑戰(zhàn)。 創(chuàng)建一個克服這些復(fù)雜性的易懂模型會帶來巨大的成就感。

到此,關(guān)于“什么是領(lǐng)域驅(qū)動設(shè)計”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)
推薦閱讀:
  1. 什么是PHP
  2. 什么是python

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI