結(jié)合電商支付業(yè)務(wù),一文搞懂DDD

源 / 頂級(jí)程序員 文/
作者范鋼,曾任航天信息首席架構(gòu)師,《大話重構(gòu)》一書(shū)的作者。本文結(jié)合電商支付場(chǎng)景詳細(xì)描述了領(lǐng)域驅(qū)動(dòng)模型的實(shí)際應(yīng)用。



限時(shí)折扣
限量折扣
對(duì)某類(lèi)商品進(jìn)行折扣
對(duì)某個(gè)商品進(jìn)行折扣
不折扣

開(kāi)放原則:我們開(kāi)發(fā)的軟件系統(tǒng),對(duì)于功能擴(kuò)展是開(kāi)放的(Open for Extension),即當(dāng)系統(tǒng)需求發(fā)生變更時(shí),可以對(duì)軟件功能進(jìn)行擴(kuò)展,使其滿(mǎn)足用戶(hù)新的需求。
封閉原則:對(duì)軟件代碼的修改應(yīng)當(dāng)是封閉的(Close for Modification),即在修改軟件的同時(shí),不要影響到系統(tǒng)原有的功能,所以應(yīng)當(dāng)在不修改原有代碼的基礎(chǔ)上實(shí)現(xiàn)新的功能。也就是說(shuō),在增加新功能的時(shí)候,新代碼與老代碼應(yīng)當(dāng)隔離,不能在同一個(gè)類(lèi)、同一個(gè)方法中。
在不添加新功能的前提下,重構(gòu)代碼,調(diào)整原有程序結(jié)構(gòu),以適應(yīng)新功能; 實(shí)現(xiàn)新的功能。

真實(shí)世界有什么事物,軟件世界就有什么對(duì)象;
真實(shí)世界中這些事物都有哪些行為,軟件世界中這些對(duì)象就有哪些方法;
真實(shí)世界中這些事物間都有哪些關(guān)系,軟件世界中這些對(duì)象間就有什么關(guān)聯(lián)。

在用戶(hù)下單以后,經(jīng)過(guò)下單流程進(jìn)入付款功能;
通過(guò)用戶(hù)檔案獲得用戶(hù)名稱(chēng)、地址等信息;
記錄商品及其數(shù)量,并匯總付款金額;
保存訂單;
通過(guò)遠(yuǎn)程調(diào)用支付接口進(jìn)行支付。
該場(chǎng)景中有“訂單”,每個(gè)訂單都對(duì)應(yīng)一個(gè)用戶(hù);
一個(gè)用戶(hù)可以有多個(gè)用戶(hù)地址,但每個(gè)訂單只能有一個(gè)用戶(hù)地址;
此外,一個(gè)訂單對(duì)應(yīng)多個(gè)訂單明細(xì),每個(gè)訂單明細(xì)對(duì)應(yīng)一個(gè)商品,每個(gè)商品對(duì)應(yīng)一個(gè)供應(yīng)商。



當(dāng)“付款”發(fā)生變更時(shí),“折扣”是不是一定要變?
當(dāng)“折扣”發(fā)生變更時(shí),“付款”是不是一定要變?
當(dāng)“限時(shí)折扣”發(fā)生變更的時(shí)候,“限量折扣”是不是一定要變?
當(dāng)“限量折扣”發(fā)生變更的時(shí)候,“某類(lèi)商品的折扣”是不是一定要變?
……


對(duì)不同類(lèi)型的 VIP 會(huì)員(金卡會(huì)員、銀卡會(huì)員)進(jìn)行不同的折扣;
在支付時(shí),為 VIP 會(huì)員發(fā)放福利(積分、返券等);
VIP 會(huì)員可以享受某些特權(quán)。
“用戶(hù)”發(fā)生變更時(shí),“VIP 會(huì)員”是否要變;
“VIP 會(huì)員”發(fā)生變更時(shí),“用戶(hù)”是否要變。
“用戶(hù)”要做的是用戶(hù)的注冊(cè)、變更、注銷(xiāo)等操作;
“VIP 會(huì)員”要做的是會(huì)員折扣、會(huì)員福利與會(huì)員特權(quán);
而“付款”與“VIP 會(huì)員”的關(guān)系是在付款的過(guò)程中去調(diào)用會(huì)員折扣、會(huì)員福利與會(huì)員特權(quán)。



當(dāng)支付寶支付接口發(fā)生變更時(shí),影響的只限于支付寶 Adapter;
當(dāng)微信支付接口發(fā)生變更時(shí),影響的只限于微信支付 Adapter;
當(dāng)要增加一個(gè)新的支付方式時(shí),只需要再寫(xiě)一個(gè)新的 Adapter。

好文推薦


公司起訴技術(shù)總監(jiān)索賠 90 萬(wàn)元,稱(chēng)其拖延研發(fā)進(jìn)度

網(wǎng)傳京東某程序員因壓力太大,在商品頁(yè)面置入罵人代碼!京東辟謠:不關(guān)我們的事,外部商家干的!

某大廠程序員炫耀:來(lái)新加坡后,每天最多工作五六個(gè)小時(shí),家庭年收入150萬(wàn)人民幣,已躺平!
一鍵三連「分享」、「點(diǎn)贊」和「在看」
技術(shù)干貨與你天天見(jiàn)~
評(píng)論
圖片
表情

