大廠面試:說(shuō)說(shuō)DDD分層架構(gòu)
大廠面試中,會(huì)經(jīng)常聊到DDD分層架構(gòu)這個(gè)問(wèn)題,這是一種幫助開(kāi)發(fā)者更好地管理和解耦復(fù)雜系統(tǒng),是在三層架構(gòu)的基礎(chǔ)上,優(yōu)化過(guò)的四層架構(gòu)。本文就給大家詳細(xì)解釋。
在大廠面試中,DDD分層架構(gòu)常常是一個(gè)熱門(mén)話題。
DDD分層方法能幫助開(kāi)發(fā)者更好地管理和解耦復(fù)雜系統(tǒng),同時(shí)也評(píng)估候選人對(duì)架構(gòu)設(shè)計(jì)的深度理解。
關(guān)于DDD的各層:用戶接口層、應(yīng)用層、領(lǐng)域?qū)右约盎A(chǔ)設(shè)施層,候選人如果不能清楚地說(shuō)出各層的職責(zé),基本面試也就涼涼。
DDD分層架構(gòu)是在三層架構(gòu)的基礎(chǔ)上,優(yōu)化過(guò)的四層架構(gòu)。
在下圖中,從上到下分別是:用戶接口層、應(yīng)用層、領(lǐng)域?qū)雍突A(chǔ)層。
一、用戶接口層
用戶接口層主要負(fù)責(zé)管理系統(tǒng)與用戶之間的交互。這一層接收用戶的輸入,如表單數(shù)據(jù)或操作,之后,用戶接口層將應(yīng)用層的處理結(jié)果呈現(xiàn)給用戶,結(jié)果通過(guò)Web頁(yè)面、移動(dòng)應(yīng)用界面等形式展示。
二、應(yīng)用層
應(yīng)用層主要用于處理與業(yè)務(wù)用例和業(yè)務(wù)流程相關(guān)的操作,理論上不應(yīng)該包含業(yè)務(wù)規(guī)則或邏輯。由于它位于領(lǐng)域?qū)又?,領(lǐng)域?qū)影鄠€(gè)聚合,所以它可以協(xié)調(diào)多個(gè)聚合的服務(wù)和領(lǐng)域?qū)ο?,完成服?wù)的編排和組合。
應(yīng)用層應(yīng)該是很簡(jiǎn)潔的一層,設(shè)計(jì)和開(kāi)發(fā)時(shí),不要把領(lǐng)域?qū)拥臉I(yè)務(wù)邏輯放在這里。如果應(yīng)用層太復(fù)雜,領(lǐng)域模型會(huì)失去重點(diǎn),微服務(wù)可能會(huì)變成傳統(tǒng)的三層架構(gòu),業(yè)務(wù)邏輯會(huì)變得混亂。
三、領(lǐng)域?qū)?/h2>
領(lǐng)域?qū)邮窍到y(tǒng)的核心層,負(fù)責(zé)封裝業(yè)務(wù)概念、業(yè)務(wù)邏輯和業(yè)務(wù)規(guī)則,它的任務(wù)是執(zhí)行核心業(yè)務(wù)邏輯,并通過(guò)各種校驗(yàn)方式確保業(yè)務(wù)的準(zhǔn)確性。領(lǐng)域?qū)影酆细?shí)體、值對(duì)象、領(lǐng)域服務(wù)等領(lǐng)域模型中的領(lǐng)域?qū)ο蟆?/p>
四、基礎(chǔ)層
基礎(chǔ)層為其他各層提供常用的技術(shù)和基礎(chǔ)服務(wù)。這些服務(wù)包括第三方工具、驅(qū)動(dòng)程序、消息中間件、網(wǎng)關(guān)、文件、緩存和數(shù)據(jù)庫(kù)等。它最常見(jiàn)的功能是提供數(shù)據(jù)庫(kù)持久化。
基礎(chǔ)層為應(yīng)用層、領(lǐng)域?qū)犹峁┩ㄓ玫募夹g(shù)能力,實(shí)現(xiàn)應(yīng)用層、領(lǐng)域?qū)优c基礎(chǔ)設(shè)施層的解耦,讓領(lǐng)域?qū)訉?zhuān)注于表達(dá)業(yè)務(wù)邏輯,無(wú)需關(guān)注技術(shù)實(shí)現(xiàn)細(xì)節(jié)。這層的設(shè)計(jì)和實(shí)現(xiàn)還需要考慮到系統(tǒng)的可擴(kuò)展性、安全性和性能。
本文由人人都是產(chǎn)品經(jīng)理作者【湯師爺】,微信公眾號(hào):【架構(gòu)師湯師爺】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于 CC0 協(xié)議。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!