日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

在项目中引入领域驱动设计的经验

發(fā)布時(shí)間:2025/7/14 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在项目中引入领域驱动设计的经验 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Chris Patuzzo近期在一次演講中介紹了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)的原則,并結(jié)合一個(gè)基于Ruby on Rails的真實(shí)項(xiàng)目進(jìn)行講解。在這次項(xiàng)目之前,Chris所在的團(tuán)隊(duì)為重新設(shè)計(jì)公司的主營(yíng)網(wǎng)站所做的兩個(gè)概念驗(yàn)證都因?yàn)榭缮炜s性方面的問題而失敗了。因此,業(yè)務(wù)主管部門決定在這一次嘗試中采取一種更為敏捷的、增量式的方法,他們受到了DDD的啟發(fā),在這次重啟的開發(fā)過程中全力促進(jìn)開發(fā)者與領(lǐng)域?qū)<业慕涣鳌?/p>\\

Patuzzo是Which?的技術(shù)主管。在他看來,DDD的要點(diǎn)是捕捉到業(yè)務(wù)的概念,軟件的構(gòu)建需要圍繞著對(duì)業(yè)務(wù)的理解而展開。在這次項(xiàng)目重啟的過程中,開發(fā)者開始學(xué)會(huì)與領(lǐng)域?qū)<疫M(jìn)行深入交流,以試圖理解整個(gè)業(yè)務(wù)的實(shí)際行為。在此基礎(chǔ)上設(shè)計(jì)出合適的領(lǐng)域模型,并找到系統(tǒng)中存在的各個(gè)邊界。按Patuzzo的經(jīng)驗(yàn)來看,在具有清晰的邊界劃分的系統(tǒng)中開展工作要輕松許多。通過保持關(guān)注分離,系統(tǒng)將更易于理解,如果之后需要將系統(tǒng)中的某些部分提取出來,實(shí)現(xiàn)起來也會(huì)更簡(jiǎn)單。

\\

DDD建議將問題分解為多個(gè)層,每一層各司其職,例如表示層、領(lǐng)域?qū)右约盎A(chǔ)設(shè)施層。Patuzzo特別提到在進(jìn)行Rails開發(fā)時(shí)存在著一種常見的實(shí)踐,即將領(lǐng)域?qū)优c基礎(chǔ)設(shè)施層合并在一起,這種方式顯然違背了DDD的建議。除了分層架構(gòu)外,另一種選擇是由Alistair Cockburn定義的多邊形架構(gòu)(Hexagonal architecture),但Patuzzo并不強(qiáng)烈主張這種架構(gòu)風(fēng)格,他認(rèn)為這種架構(gòu)可能會(huì)令人迷惑。他表示,這些架構(gòu)有助于管理系統(tǒng)的復(fù)雜度,保持對(duì)核心領(lǐng)域的專注,但他也承認(rèn)這些思想對(duì)于Ruby社區(qū)來說還比較新鮮,需要一定的時(shí)間去適應(yīng)。

\\

衡量復(fù)雜度的一種方式是計(jì)算對(duì)象間的交互,通過使用聚合與聚合根,可以將這種交互限制在聚合之內(nèi),以及聚合根之間的交互,從而將這種交互的頻率減至最低。Patuzzo將其稱為系統(tǒng)的表面區(qū)域。Ruby項(xiàng)目通常會(huì)使用活動(dòng)目錄(Active Record)這種設(shè)計(jì)方式,因此每個(gè)類都表現(xiàn)為全局的常量,可以在系統(tǒng)中的每一處隨意訪問。為了繞開這個(gè)問題,開發(fā)者通常會(huì)用聚合的名稱作為類名的前綴。通過將系統(tǒng)功能分解為聚合,使對(duì)象間的通信顯得更為結(jié)構(gòu)化。這種新的設(shè)計(jì)方式對(duì)于團(tuán)隊(duì)來說確實(shí)引入了一個(gè)陡峭的學(xué)習(xí)曲線,這一部分在開發(fā)過程中所產(chǎn)生的分歧也是最大的。但在項(xiàng)目的回顧會(huì)議中,Patuzzo對(duì)于最終的結(jié)果表示很滿意。

\\

Patuzzo在總結(jié)中表示:雖然全新的開發(fā)過程為開發(fā)者帶來了一些負(fù)擔(dān),但好處也很明顯。開發(fā)者學(xué)到了DDD的基本模式與思想、如何將架構(gòu)分解為多個(gè)層、關(guān)注分離的思想、以及如何設(shè)計(jì)一個(gè)能夠應(yīng)對(duì)變化的系統(tǒng)。由于新系統(tǒng)是基于一個(gè)能夠充分表現(xiàn)業(yè)務(wù)需求的模型而建立的,因此他相信他的團(tuán)隊(duì)將能夠更好地滿足新的需求。

\\

查看英文原文:Experiences Introducing DDD in a Project

總結(jié)

以上是生活随笔為你收集整理的在项目中引入领域驱动设计的经验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。