作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成長,讓自己和他人都能有所收獲!😄 大家好,我是技術(shù)UP主小傅哥。 👨🏻?💻 經(jīng)過5.1假期的一頓框框輸出,終于完成了《大營銷項目》第二階段的開發(fā)和上線,體驗地址:
作者:小傅哥
博客:
https://bugstack.cn
沉淀、分享、成長,讓自己和他人都能有所收獲!?
大家好,我是技術(shù)UP主小傅哥。
???? 經(jīng)過5.1假期的一頓框框輸出,終于完成了《大營銷項目》第二階段的開發(fā)和上線,體驗地址:
https://gaga.plus
有了這個項目的落地,也終于可以給大家完整的梳理出一套 DDD 落地指引規(guī)范。包括;戰(zhàn)略、戰(zhàn)術(shù)、戰(zhàn)役,各個階段都要做什么,
怎么做風(fēng)暴模型和四色建模
。有了這套東西參考,小白也能目標(biāo)明確的做 DDD 項目開發(fā)啦!
我一直講,要先實踐,再理論!
編程,偏理科的東西要先上手實踐,再做理論理解。因為所有的理論提出,也都是建立有了實踐結(jié)果后,抽象出來的理論。但你上來就要用理論去反推結(jié)果,并不是一件容易的事情。就像不少的 DDD 文章,往往會用一個理論,去講另外一個理論,這也導(dǎo)致很多沒有實踐過的小白伙伴,壓根不知道講的是什么。最終覺得 DDD 太難!
所以在近2年的時間里,小傅哥分享了非常多的 DDD 實踐內(nèi)容,包括;DDD 工程結(jié)構(gòu)&腳手架、各項分布式技術(shù)棧在 DDD 結(jié)構(gòu)下的使用、DDD 實戰(zhàn)項目&小場景訓(xùn)練。這些內(nèi)容都可以在 bugstack.cn 學(xué)習(xí)。
接下來,小傅哥會帶著你走一遍
研發(fā)設(shè)計評審
,講解 DDD 落地項目的全部過程。
文末有對應(yīng)本項目的 DDD 工程代碼地址,理論 + 代碼 + 視頻,學(xué)的嘎嘎透徹!
首先 DDD 是一種軟件設(shè)計方法, Domain-driven design (DDD) is a major software design approach. 來自維基百科。軟件設(shè)計方法涵蓋了;范式、模型、框架、方法論,主要活動包括建模、測試、工程、開發(fā)、部署、維護(hù)。來自維基百科的 軟件設(shè)計 涵蓋信息介紹。
在 DDD 領(lǐng)域驅(qū)動設(shè)計中,常提到
戰(zhàn)略
、
戰(zhàn)術(shù)
,和一少部分會講到
戰(zhàn)役
。這3個詞主要講的是不同的開發(fā)階段所需要完成的事項;
DDD 的戰(zhàn)略、戰(zhàn)術(shù)和戰(zhàn)役設(shè)計相輔相成,戰(zhàn)略提供系統(tǒng)的建模作為宏觀指導(dǎo),戰(zhàn)術(shù)下面有N個戰(zhàn)役,兩者則關(guān)注具體的實現(xiàn)和編碼落地。
在維基百科中有不少 DDD 非常好的資料,其中一個是關(guān)于事件風(fēng)暴的,講解了執(zhí)行戰(zhàn)略設(shè)計中風(fēng)暴模型的步驟。
有了這基礎(chǔ)認(rèn)知,接下來我們通過《大營銷項目》從需求到設(shè)計,一步步了解系統(tǒng)的領(lǐng)域驅(qū)動設(shè)計。
如圖,是一個復(fù)雜的營銷抽獎場景玩法需求,涵蓋了;
活動配置
、
簽到&獎勵
、
活動賬戶
、
抽獎策略「責(zé)任鏈+規(guī)則樹」
、
庫存扣減
、
抽獎滿N次后階梯抽獎
等。面對這樣的復(fù)雜系統(tǒng),非常適合使用 DDD 落地。
分析需求;
依照于產(chǎn)品需求,在產(chǎn)品的 PRD 文檔中還會繪制出業(yè)務(wù)流程圖。產(chǎn)品的流程圖會比較粗一些,研發(fā)后期需要根據(jù)產(chǎn)品的 PRD 文檔做具體的設(shè)計。
如果首次承接的是一個新的系統(tǒng),還需要對系統(tǒng)進(jìn)行架構(gòu)設(shè)計,是單體架構(gòu)還是分布式架構(gòu),以及所要用到的技術(shù)棧。最好在提供好相關(guān)的落地案例和DDD腳手架。—— 沒有這些東西,就想說點理論,就讓團(tuán)隊用DDD寫代碼,那就是天方夜譚! 你都沒寫出DDD代碼,兄弟??哪里去復(fù)制!
資料 :—— 詳細(xì)介紹了 DDD 落地的案例和通用的腳手架。
不少伙伴,都講過不知道怎么開始 DDD,主要是拿到一個需求,不知道從哪下手,也不知道那些領(lǐng)域的模型是怎么弄出來的。好,這次小傅哥就給你整個完整的案例,告訴你如何開始。
根據(jù)業(yè)務(wù)需求畫系統(tǒng)用例圖;
在使用 DDD 的標(biāo)準(zhǔn)對系統(tǒng)建模前,一堆人要先了解 DDD 的操作手段,這樣才能讓產(chǎn)品、研發(fā)、測試、運營等了解業(yè)務(wù)的伙伴,都能在同一個語言下完成系統(tǒng)建模。
????敲黑板 綜上,左下角的示意圖。就是一個用戶,通過一個策略命令,使用領(lǐng)域?qū)ο,通過業(yè)務(wù)流程,完成2個領(lǐng)域事件,調(diào)用1次外部接口個過程。我們在整個 DDD 建模過程中,就是在尋找這些節(jié)點。
接下來,大量的時間,都是在挖掘領(lǐng)域事件。這個過程就是一堆人頭腦風(fēng)暴的過程,避免錯失流程節(jié)點。
在確定了領(lǐng)域事件以后,接下來要做的就是通過決策命令串聯(lián)領(lǐng)域事件,并填充上所需要的領(lǐng)域?qū)ο。這塊的操作,新手可以分開處理,如先給領(lǐng)域事件添加決策命令、執(zhí)行用戶和領(lǐng)域?qū)ο,最后在串?lián)流程。就像
事件風(fēng)暴定義
中的示意一樣。
有了識別出來的領(lǐng)域角色的流程,就可以非常容易的劃分出領(lǐng)域邊界了。先在事件風(fēng)暴圖上圈出領(lǐng)域邊界,之后在單獨提供領(lǐng)域劃分。
DDD 的戰(zhàn)略設(shè)計做完,劃分出領(lǐng)域邊界以后。接下來就是要執(zhí)行戰(zhàn)術(shù)和戰(zhàn)役了。也就是在工程中做編碼實現(xiàn)。但一定要懂得設(shè)計原則和設(shè)計模式,否則寫不出好的代碼的。
機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實現(xiàn)對象集合與DataTable的相互轉(zhuǎn)換
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動態(tài)代理的對比分析
閱讀Win11筆記本“自動管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)