這篇文章給大家介紹領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是怎樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
創(chuàng)新新互聯(lián),憑借十年的網(wǎng)站建設(shè)、做網(wǎng)站經(jīng)驗(yàn),本著真心·誠(chéng)心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有1000+案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)公司。
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是Eric Evans 定義的一種發(fā)展理念,
軟件中的復(fù)雜性:包含“某種程度上確實(shí)有用但無法解釋如何運(yùn)行但代碼”。軟件變得復(fù)雜及難以管理但一個(gè)主要原因在于,領(lǐng)域復(fù)雜性和技術(shù)復(fù)雜性混合在來一起。
軟件復(fù)雜性:偶發(fā)性技術(shù)復(fù)雜性和領(lǐng)域邏輯復(fù)雜性。
1.未使用通用語言創(chuàng)建的代碼:對(duì)于公共語言和問題域知識(shí)缺乏重視會(huì)導(dǎo)致代碼庫可用但無法揭示業(yè)務(wù)目的,這會(huì)使得代碼庫難以閱讀和維護(hù),因?yàn)榉治瞿P团c代碼模型之間的轉(zhuǎn)譯將會(huì)代價(jià)高昂且容易出錯(cuò)。備注:分析模型:分析模型用于描述一個(gè)軟件應(yīng)用程序的邏輯設(shè)計(jì)與結(jié)構(gòu)。它可以由示意圖或使用UML這樣的建模語言來表示。它是軟件的一種表現(xiàn)形式,讓非技術(shù)人員能夠概念化以便理解軟件是如何構(gòu)造的。
2.組織結(jié)構(gòu)的缺乏:一個(gè)系統(tǒng)的最初體現(xiàn)是快速制作且通常能獲得面面俱到的成功,但由于缺乏基于圍繞問題域模型的應(yīng)用程序設(shè)計(jì)的重視,后續(xù)的功能擴(kuò)展就會(huì)變得很棘手。
1.泥球模式將扼殺開發(fā):開發(fā)團(tuán)隊(duì)會(huì)不斷抱怨在如此一團(tuán)混亂的情況下難以開展工作。開發(fā)速度的增長(zhǎng)水平也無法滿足業(yè)務(wù)需求。
2.缺乏對(duì)問題域的關(guān)注:當(dāng)不能充分理解正在處理的業(yè)務(wù)領(lǐng)域時(shí),軟件項(xiàng)目就會(huì)失敗。編碼不應(yīng)該是困難的哪一環(huán),維持一個(gè)能夠滿足業(yè)務(wù)用例的有用軟件模型才是難點(diǎn)所在。
問題域涉及你當(dāng)前正在構(gòu)建軟件的主題領(lǐng)域。DDD強(qiáng)調(diào)的是在致力于為大型復(fù)雜業(yè)務(wù)系統(tǒng)創(chuàng)建軟件時(shí)專注領(lǐng)域要高于其他的一切的需求。
DDD 能同時(shí)應(yīng)對(duì)理解問題域以及創(chuàng)建有助于解決其內(nèi)在的問題的可維護(hù)解決方案的挑戰(zhàn)。
1.提煉問題域已揭示重要之處是什么。
開發(fā)團(tuán)隊(duì)與領(lǐng)域?qū)<視?huì)使用分析模式和知識(shí)處理來將大的問題域提煉成更具管理性的子域。核心領(lǐng)域是出于開發(fā)過程的產(chǎn)品背后的驅(qū)動(dòng)力;它是構(gòu)造產(chǎn)品的根本原因。
探索核心領(lǐng)域有助于團(tuán)隊(duì)理解他們制作軟件的原因以及軟件對(duì)業(yè)務(wù)達(dá)成的成就意味著什么。對(duì)業(yè)務(wù)目標(biāo)的鑒定將使得開發(fā)團(tuán)隊(duì)能夠確定系統(tǒng)的重要部分并為之投入精力。隨著業(yè)務(wù)的發(fā)展,軟件也必須相應(yīng)發(fā)展;它需要具備可修改能力,對(duì)應(yīng)用程序關(guān)鍵區(qū)域的代碼質(zhì)量進(jìn)行投入將有助于應(yīng)用程序跟上業(yè)務(wù)的變化節(jié)奏。
2.創(chuàng)建一個(gè)模型以解決領(lǐng)域問題 在解空間中,會(huì)為每一個(gè)子域構(gòu)建一個(gè)軟件模型以處理領(lǐng)域問題并讓軟件與業(yè)務(wù)保持一致。該模型并非現(xiàn)實(shí)世界的模型,而更多的是構(gòu)建來滿足業(yè)務(wù)用例需求的一個(gè)抽象體,同時(shí)仍保持業(yè)務(wù)領(lǐng)域的規(guī)則和邏輯。
3.使用公共語言開啟建模協(xié)作 模型使用公共語言構(gòu)建(UML),以便快捷高效地將軟件模型和概念分析模型連接在一起。編碼時(shí)的術(shù)語會(huì)被映射到公共語言中,在業(yè)務(wù)分析時(shí)隱藏的概念也會(huì)被反饋到代碼中。這正是領(lǐng)域?qū)<液烷_發(fā)團(tuán)隊(duì)能夠在協(xié)作中逐步發(fā)展模型的關(guān)鍵。
4.將模型與歧義和損壞隔離 模型位于有界上下文內(nèi),定義了模型的適用性并確保保留其完整性。有界上下文用于形成一個(gè)圍繞模型的防護(hù)邊界,這是通過允許總體解決方案的不同模型在良好定義的業(yè)務(wù)上下文內(nèi)部逐步發(fā)展來達(dá)成的,這樣就不會(huì)帶來對(duì)系統(tǒng)其他的負(fù)面連鎖影響。
模型是與基礎(chǔ)架構(gòu)代碼隔離的,以避免技術(shù)與業(yè)務(wù)概念融合的偶發(fā)復(fù)雜性。通過將模型完整性與第三方代碼隔離,有界上下文還能阻止模型完整性被損壞。
5.理解上下文之間的關(guān)系
DDD 理解確保團(tuán)隊(duì)和業(yè)務(wù)在獨(dú)立模型和上下文如何共同工作以便解決跨越子域的領(lǐng)域問題方面要非常清楚的需求。
DDD的戰(zhàn)術(shù)模式是一個(gè)幫助創(chuàng)建用于復(fù)雜有界上下文的有效模型的模式集合。(企業(yè)應(yīng)用架構(gòu)模式 ,設(shè)計(jì)模式)
專注于核心領(lǐng)域
通過協(xié)作進(jìn)行學(xué)習(xí)
通過探索和實(shí)驗(yàn)來創(chuàng)建模型
通信
理解模型的適用性
讓模型持續(xù)發(fā)展
戰(zhàn)術(shù)模式是DDD的關(guān)鍵 對(duì)于開發(fā)人員來說,在開發(fā)人員不關(guān)心或不理解的領(lǐng)域方面,發(fā)現(xiàn)在代碼中實(shí)現(xiàn)的DDD戰(zhàn)術(shù)模式遠(yuǎn)比發(fā)現(xiàn)業(yè)務(wù)用戶和團(tuán)隊(duì)之間的會(huì)話要容易多。這就是DDD會(huì)被誤認(rèn)為不過是由實(shí)體,值對(duì)象和存儲(chǔ)庫構(gòu)成的一種模式語言。
DDD是一套框架
DDD是銀彈
關(guān)于領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
分享題目:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是怎樣的
鏈接URL:http://aaarwkj.com/article16/jjjpdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、做網(wǎng)站、定制網(wǎng)站、網(wǎng)站收錄、響應(yīng)式網(wǎng)站、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)