亚洲日本欧美日韩高观看,性高湖久久久久久久久,亚洲av成人噜噜无码网站,亚洲欧美日韩国产一区二区动图,亚洲欧美日韩国产精品一区二区


學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

DDD,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)究竟是什么?

來源:北大青鳥總部 2023年08月22日 14:02

摘要: 在互聯(lián)網(wǎng)的萌芽時(shí)代,我們倡導(dǎo)能滿足用戶的基本需求即可;在互聯(lián)網(wǎng)的野蠻生長時(shí)代,大量網(wǎng)民涌入互聯(lián)網(wǎng),我們倡導(dǎo)能滿足不同用戶的不同需求;在互聯(lián)網(wǎng)的穩(wěn)定成熟時(shí)代,互聯(lián)網(wǎng)之爭(zhēng)也變?yōu)榫W(wǎng)民時(shí)間的爭(zhēng)奪,這時(shí)候倡導(dǎo)“精細(xì)化運(yùn)營”。

在互聯(lián)網(wǎng)的萌芽時(shí)代,這會(huì)兒互聯(lián)網(wǎng)還剛剛誕生,我們倡導(dǎo)“有即可”,能滿足用戶的基本需求即可;在互聯(lián)網(wǎng)的野蠻生長時(shí)代,這會(huì)兒已經(jīng)大量的玩家和網(wǎng)民涌入互聯(lián)網(wǎng),我們倡導(dǎo)“小步快跑,快速迭代”,能滿足不同用戶的不同需求;在互聯(lián)網(wǎng)的穩(wěn)定成熟時(shí)代,這會(huì)兒互聯(lián)網(wǎng)紅利已經(jīng)薅的差不多了,網(wǎng)民就那么多,互聯(lián)網(wǎng)之爭(zhēng)也變?yōu)榫W(wǎng)民時(shí)間的爭(zhēng)奪,這時(shí)候我們倡導(dǎo)“精細(xì)化運(yùn)營”。

與“有即可”匹配的架構(gòu)設(shè)計(jì)思想是單體架構(gòu),與“快速迭代”匹配的架構(gòu)設(shè)計(jì)思想是SOA架構(gòu),而與精細(xì)化運(yùn)營匹配的架構(gòu)設(shè)計(jì)思想便是DDD領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DomainDriver Design)。那么為什么會(huì)有DDD出現(xiàn)?它解決什么問題呢?它是什么樣?


01為什么會(huì)有DDD出現(xiàn)?

技術(shù)架構(gòu)不匹配業(yè)務(wù)發(fā)展要求。在早期的時(shí)候,互聯(lián)網(wǎng)剛剛出現(xiàn),我們的要求都很低,功能也很簡單,只要增、刪、改、查即可。所以那會(huì)兒的業(yè)務(wù),只要用PHP寫個(gè)程序、連接Mysql數(shù)據(jù)庫、搭在Linux系統(tǒng)之上就可以運(yùn)行起來。于是乎就出現(xiàn)了一個(gè)模塊里包含多個(gè)功能。

比如在電商平臺(tái)中的訂單服務(wù),我們把下訂單、支付、售后、評(píng)價(jià)等都放在里面,早期的時(shí)候功能很簡單,只維護(hù)訂單服務(wù),只CRUD訂單大表即可。但是隨著業(yè)務(wù)的發(fā)展,當(dāng)我們只想改支付功能或評(píng)價(jià)功能時(shí),就不能輕易做改動(dòng)了,因?yàn)楦膭?dòng)支付的時(shí)候,有可能影響到售后。通過大量的測(cè)試雖然可以避免此類問題,但是投入的人力物力高。而DDD便可以很好的解決掉這個(gè)問題。


02DDD解決了什么問題?

在第一個(gè)問題中,我們可以看到答案很顯然是系統(tǒng)架構(gòu)設(shè)計(jì)不清晰,系統(tǒng)模塊高耦合、低內(nèi)聚。DDD提出以領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的思想進(jìn)行業(yè)務(wù)架構(gòu)設(shè)計(jì)(根據(jù)業(yè)務(wù)需求設(shè)計(jì)業(yè)務(wù)模塊)、系統(tǒng)架構(gòu)設(shè)計(jì)(設(shè)計(jì)系統(tǒng)、子系統(tǒng))、技術(shù)架構(gòu)設(shè)計(jì)(采用技術(shù)及相關(guān)框架),將業(yè)務(wù)架構(gòu)映射到系統(tǒng)架構(gòu)上,業(yè)務(wù)需求變化時(shí),系統(tǒng)架構(gòu)也能隨之變化。

在保證整個(gè)系統(tǒng)的相關(guān)人員(設(shè)計(jì)人員、開發(fā)人員、測(cè)試人員、維護(hù)人員)都在同一個(gè)認(rèn)知上討論事情的同時(shí),也能快速高效響應(yīng)業(yè)務(wù)需求。通過將業(yè)務(wù)架構(gòu)映射到系統(tǒng)架構(gòu)上,DDD所呈現(xiàn)的系統(tǒng)必然是高內(nèi)聚、低耦合的,即在業(yè)務(wù)系統(tǒng)中,修改A模塊并不會(huì)影響B(tài)模塊正常使用。


03DDD是什么樣?

在DDD中有一些關(guān)鍵名詞,我們先來理解一下。領(lǐng)域,即某個(gè)有邊界的業(yè)務(wù)的抽象,反應(yīng)業(yè)務(wù)需求的本質(zhì);限界上下文,界定領(lǐng)域的邊界;實(shí)體,即有唯一標(biāo)識(shí)的對(duì)象,是一個(gè)持續(xù)存在、更新的生命,一般一個(gè)領(lǐng)域一個(gè)實(shí)體;值對(duì)象,即描述事物的對(duì)象,沒有唯一標(biāo)識(shí);聚合,即一組相關(guān)的被視為整體的對(duì)象;聚合根,聚合的對(duì)象,外部對(duì)象訪問聚合只能通過聚合根訪問。進(jìn)行DDD設(shè)計(jì)的步驟一般包含5步:

1.根據(jù)需求劃分出領(lǐng)域、限界上下文;

2.分析每一個(gè)限界上下文中的實(shí)體、值對(duì)象;

3.聚合實(shí)體、值對(duì)象,劃分出聚合范圍、聚合根;

4.設(shè)計(jì)聚合根的倉儲(chǔ);

5.實(shí)際操作,不斷反饋,迭代模型。不過只談概念不實(shí)踐,便是耍流氓。

那我們以設(shè)計(jì)一個(gè)秒殺系統(tǒng)為例,來看看DDD如何進(jìn)行設(shè)計(jì)實(shí)踐?


產(chǎn)品需求:在除夕夜當(dāng)天舉辦一個(gè)秒殺活動(dòng),所有參加的商品都以超低價(jià)賣出,比如iPhone12、Macbook等,時(shí)間是20:00開始,先到先得,售完為止。拿到這樣的一個(gè)需求時(shí),首先我們根據(jù)使用用戶可以拆分成兩個(gè)領(lǐng)域,User活動(dòng)域、Manager管理域。在User域,用戶的整體使用路徑包含參加活動(dòng)、瀏覽商品、購買商品、售后評(píng)價(jià),在這其中涉及到的領(lǐng)域包含活動(dòng)子域、支付子域、庫存子域、售后子域,為了保障刷單等行為不發(fā)生,我們還需要風(fēng)控子域。通過DDD的明確領(lǐng)域劃分,我們可以確定秒殺活動(dòng)準(zhǔn)入、支付、庫存、風(fēng)控的上下文,每個(gè)上下文對(duì)內(nèi)高度內(nèi)聚、對(duì)外低度耦合。

領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DomainDriverDesign)是一種新的軟件設(shè)計(jì)方法論,它的思想是使用統(tǒng)一的語言將業(yè)務(wù)進(jìn)行劃分,保障開發(fā)人員、設(shè)計(jì)人員在交流時(shí)是針對(duì)同一個(gè)事務(wù)進(jìn)行溝通,產(chǎn)品的業(yè)務(wù)架構(gòu)能夠完全映射到技術(shù)架構(gòu)、系統(tǒng)架構(gòu)當(dāng)中。DDD最大的好處是統(tǒng)一交流語言,降低了溝通成本,但存在的難點(diǎn)是領(lǐng)域?qū)<疑腥?,它還是一個(gè)很新的概念,正在等待著更多最佳實(shí)踐~


報(bào)名優(yōu)惠
免費(fèi)試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接