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