精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go設(shè)計模式實戰(zhàn)--用職責鏈實現(xiàn)購物車與商品優(yōu)惠的解耦

開發(fā) 前端
我們來實現(xiàn)couponChecker、discountChecker、vipChecker 三個具體的流程步驟的處理類,他們各自要處理的邏輯都封裝在自己實現(xiàn)的Check方法中。


上一節(jié)「Go項目實戰(zhàn)-購物車功能的核心接口開發(fā)」中我們完成了購物車模塊的基本功能的開發(fā),所有購物車功能中存在變數(shù)的就是購物車的賬單結(jié)算功能,也是未來經(jīng)常可能會遇到需求改動的功能?各種促銷活動相關(guān)的需求都會要求涵蓋在這個功能中。

我們理解的購物車結(jié)算功能,一開始可能是是下面這個清純版的

圖片圖片

但實際上公司產(chǎn)品要求的購物車結(jié)算功能是下面這張圖這樣,不光能算出商品總價,還要能綜合考慮用戶是不是VIP,有沒有優(yōu)惠券、夠不夠參加滿減活動。

圖片圖片

而且促銷活動的玩法可能遠不止這么多未來還有可能增加新的玩法。每次新增一個玩法我們的結(jié)算模塊代碼大概率又需要增加一個代碼分支,做相應(yīng)的查詢和判斷等等操作來滿足新的促銷玩法。

那么有沒有什么設(shè)計模式能讓我們稍微緩解一下代碼不停添加條件分支來適應(yīng)新需求呢?我這么說了,當然是有了,這就是職責鏈模式,也有的資料叫責任鏈模式。本節(jié)我們把購物車的賬單結(jié)算功能使用職責鏈進行改造,讓它支持優(yōu)惠券、滿減活動、VIP折扣能促銷功能的應(yīng)用。

不過首先我們需要聊一下什么是責任鏈模式。

職責鏈模式

職責鏈在很多流行框架里都有被用到,像中間件、攔截器等框架組件都是應(yīng)用的這種設(shè)計模式,這兩個組價大家應(yīng)該用的比較多。但其實在一些核心的業(yè)務(wù)中,應(yīng)用職責鏈模式也能夠讓我們“相對無痛地”擴展業(yè)務(wù)流程的步驟。

注意我上面的用詞“相對無痛”,意思是我們不用不停地在原有步驟中增加if else 判斷,不必修改原有已經(jīng)開發(fā)好,經(jīng)過測試的流程。但還是有些代碼開發(fā)成本的,也會增加代碼的復(fù)雜度,真正做到“無痛”,那你的轉(zhuǎn)個行當甲方,最好是當老板才行。。。

職責鏈的實現(xiàn)步驟分析

我們通過上面流程擴展的痛點可以想到,流程中每個步驟都應(yīng)由一個處理對象來完成邏輯抽象、所有處理對象都應(yīng)該提供統(tǒng)一的處理自身邏輯的方法,其次還應(yīng)該維護指向下一個處理對象的引用,當前步驟自己邏輯處理完后,就調(diào)用下一個對象的處理方法,把請求交給后面的對象進行處理,依次遞進直到流程結(jié)束。

如果抽象成 UML 類圖表示的話,差不多就是下面這個樣子。

圖片圖片

圖片圖片

了解完職責鏈模式從接口和類型設(shè)計上應(yīng)該怎么實現(xiàn)后,我們進入代碼實現(xiàn)環(huán)節(jié)。

用職責鏈模式改造購物車結(jié)算功能

以我們項目的購物車結(jié)算功能在加入促銷相關(guān)的需求后,其流程如下:

查購物信息--> 查看的可用優(yōu)惠券--> 查滿減活動-->查VIP資格和折扣-->生成賬單信息。

開頭和結(jié)尾的步驟固定,不管什么類型的用戶都會有這個流程,中間的促銷流程則是變數(shù),我們的目標是利用職責鏈模式,實現(xiàn)這個流程中的每個步驟,且相互間不耦合,還支持向流程中增加步驟。

改造結(jié)算功能的第一步,是先確定新的結(jié)算功能返回的響應(yīng),我們把購物車功能結(jié)算的響應(yīng)對象改造為以下結(jié)構(gòu),增加了促銷相關(guān)的信息,這樣客戶端拿到后也能展示給用戶,讓用戶知道自己用了哪些優(yōu)惠。

新的購物車結(jié)算功能的響應(yīng)對象如下。

type CheckedCartItemBillV2 struct {
 Items      []*CartItem `json:"items"`
 BillDetail struct {
  Coupon struct { // 可用的優(yōu)惠券
   CouponId      int64`json:"coupon_id"`
   CouponName    string`json:"coupon_name"`
   DiscountMoney int    `json:"discount_money"`
  } `json:"coupon"`
  Discount struct { // 可用的滿減活動券
   DiscountId    int64`json:"discount_id"`
   DiscountName  string`json:"discount_name"`
   DiscountMoney int    `json:"discount_money"`
  } `json:"discount"`
  VipDiscountMoney   int`json:"vip_discount_money"`   // VIP減免的金額
  OriginalTotalPrice int`json:"original_total_price"`// 減免、優(yōu)惠前的總金額
  TotalPrice         int`json:"total_price"`          // 實際要支付的總金額
 } `json:"bill_detail"`
}

我們服務(wù)層使用的領(lǐng)域?qū)ο笠残枰稣{(diào)整。

type CartBillInfo struct {
 Coupon struct { // 可用的優(yōu)惠券
  CouponId      int64
  CouponName    string
  DiscountMoney int
  Threshold     int// 使用門檻, 比如滿1000 可用

 }
 Discount struct { // 可用的滿減活動券
  DiscountId    int64
  DiscountName  string
  DiscountMoney int
  Threshold     int// 使用門檻, 比如滿1000 可用
 }
 VipDiscountMoney   int// VIP減免的金額
 OriginalTotalPrice int// 減免、優(yōu)惠前的總金額
 TotalPrice         int// 實際要支付的總金額
}

接下來我們先來實現(xiàn)職責鏈模式里的公共部分—即模式的接口和抽象類,在logic/domainservice中新建cart_bill_checker.go 新增以下Interface。

type cartBillCheckHandler interface {
 RunChecker(*CartBillChecker) error
 SetNext(cartBillCheckHandler) cartBillCheckHandler
 Check(*CartBillChecker) error
}

接下來定義 cartCommonChecker ,它充當抽象類型,實現(xiàn)公共方法。

type cartCommonChecker struct {
 nextHandler cartBillCheckHandler
}

func (n *cartCommonChecker) SetNext(handler cartBillCheckHandler) cartBillCheckHandler {
 n.nextHandler = handler
return handler
}

func (n *cartCommonChecker) RunChecker(billChecker *CartBillChecker) (err error) {
if n.nextHandler != nil {
if err = n.nextHandler.Check(billChecker); err != nil {
   err = errcode.Wrap("CartBillCheckerError", err)
   return
  }

return n.nextHandler.RunChecker(billChecker)
 }

return
}

抽象方法 Check 則留給像下面優(yōu)惠券處理類 couponChecker 這樣的匿名嵌套了 cartCommonChecker 的具體處理類去實現(xiàn)。

我們來實現(xiàn)couponChecker、discountChecker、vipChecker 三個具體的流程步驟的處理類,他們各自要處理的邏輯都封裝在自己實現(xiàn)的Check方法中。

責任編輯:武曉燕 來源: 網(wǎng)管叨bi叨
相關(guān)推薦

2024-12-02 08:30:19

2025-03-10 09:07:20

2022-12-16 08:52:14

購物車系統(tǒng)存儲

2009-07-07 15:57:29

JSP購物車

2015-08-03 11:48:12

購物車動畫

2022-06-28 14:42:26

ETS購物車應(yīng)用

2011-04-14 10:08:04

AJAXPHPJQuery

2024-12-05 09:13:55

Go項目模塊

2023-01-09 08:43:53

Go設(shè)計模式

2018-05-28 09:53:12

京東購物車Java

2023-03-03 08:12:07

設(shè)計模式語言

2021-02-01 09:57:29

鴻蒙HarmonyOS應(yīng)用

2020-10-16 18:41:43

command設(shè)計模式代碼

2022-09-02 08:23:12

軟件開發(fā)解耦架構(gòu)

2025-03-17 07:47:29

Spring分布式緩存

2021-01-07 10:30:23

設(shè)計模式

2023-11-08 08:01:40

Spring購物車代碼

2022-09-13 16:01:13

購物車京東接口

2012-10-08 11:18:05

JavaMVC項目

2009-07-28 13:47:47

ASP.NET電子商務(wù)ASP.NET購物車
點贊
收藏

51CTO技術(shù)棧公眾號

欧美一级在线免费观看| 人妻无码中文久久久久专区| 中文在线观看免费| www.亚洲精品| 国产精品视频白浆免费视频| 免费一级片在线观看| 亚洲精品3区| 欧美疯狂性受xxxxx喷水图片| 法国空姐在线观看免费| 四虎在线免费看| 狠狠色狠狠色综合| 茄子视频成人在线| 久久影院一区二区| 欧美成人激情| 亚洲精品一区在线观看香蕉 | 日韩视频精品在线观看| 这里只有精品视频在线| 小毛片在线观看| 国产精品高清一区二区| 在线视频国内自拍亚洲视频| 青青草视频在线视频| 啊v在线视频| 97精品超碰一区二区三区| 91精品在线观| 成年人av网站| 99热精品在线| 久久久久一本一区二区青青蜜月| 国产精品免费在线视频| 精品中文一区| 亚洲а∨天堂久久精品9966| 在线播放免费视频| 成人18视频在线观看| 欧美视频裸体精品| 全黄性性激高免费视频| a级网站在线播放| 国产精品美女久久久久高潮| 欧美日韩国产高清视频| 图片区 小说区 区 亚洲五月| 国产乱码精品一区二区三区av| 国产精品久久久久久久久| 最新中文字幕一区| 美女精品在线观看| 日韩av电影手机在线观看| 亚洲欧美在线视频免费| 极品av少妇一区二区| 欧美乱妇高清无乱码| 粉嫩av性色av蜜臀av网站| 99久久99视频只有精品| 菠萝蜜影院一区二区免费| 成年人视频软件| 久久影视一区| caoporn成人| 亚洲va欧美va国产va天堂影院| 日韩精品福利片午夜免费观看| 95在线视频| 中文一区在线播放| 精品国产av鲁一鲁一区| 精品一二三区| 亚洲一级黄色片| 国产sm调教视频| 国产一区二区三区站长工具| 亚洲日韩第一页| 高清国产在线观看| 日韩欧美网站| 精品无码免费视频| 白白在线精品| 亚洲成年网站在线观看| 亚洲av熟女高潮一区二区| 国产精品白浆| 国产视频精品一区二区三区| 久久久久亚洲av无码专区桃色| 综合综合综合综合综合网| 欧美午夜不卡| 不卡中文字幕av| 欧美日韩成人免费观看| 亚洲国产高清一区二区三区| 88国产精品欧美一区二区三区| 中国一级特黄毛片| 日韩在线一区二区| 91亚洲精品一区二区| 亚洲av综合色区无码一二三区| 国产精品久久久久久久久久 | 欧美日韩一区二区三区在线电影| 亚洲国产高潮在线观看| 一级黄色性视频| 93在线视频精品免费观看| 欧美激情乱人伦一区| 九九热在线免费观看| 久久超碰97人人做人人爱| 91一区二区三区| 男女网站在线观看| 中文字幕一区二区三区在线观看| 国产一二三区在线播放| 精品亚洲美女网站| 欧美一级黄色大片| 香蕉视频黄色在线观看| 亚州av乱码久久精品蜜桃| 国内精品久久久久久久| 中文字幕乱码中文字幕| 成人午夜精品一区二区三区| 污视频在线免费观看一区二区三区 | 在线成人视屏| 日韩欧美一级在线播放| 亚洲一区二区三区日韩| 欧美激情四色| 国产精品成人在线| 狠狠综合久久av一区二区| 国产欧美一区二区精品秋霞影院| 国产一区二区三区乱码| 久久av影院| 日韩第一页在线| 欧美黄色aaa| 日韩高清在线电影| 精品一区二区三区日本| 欧美aaaaaaa| 欧美日韩午夜影院| 精品人妻互换一区二区三区| 影院欧美亚洲| 91在线中文字幕| 又爽又大又黄a级毛片在线视频| 欧美日韩人人澡狠狠躁视频| 老司机av网站| 婷婷精品进入| 国产精品自拍偷拍| 搞黄视频在线观看| 在线视频一区二区三区| 蜜臀av一区二区三区有限公司| 国产精品激情电影| 91手机视频在线观看| 色影院视频在线| 欧美性做爰猛烈叫床潮| 欧美老熟妇乱大交xxxxx| 夜夜嗨一区二区| 国产亚洲精品久久飘花| 丁香花在线观看完整版电影| 日韩欧美一级在线播放| 全程偷拍露脸中年夫妇| 久久99热99| 中文字幕中文字幕在线中一区高清 | 91精品在线影院| 日本激情在线观看| 欧美美女bb生活片| 三级黄色录像视频| 精品在线免费观看| 特色特色大片在线| 亚洲超碰在线观看| 久久久久久久久久久免费精品| www.99视频| 亚洲一级在线观看| 国模无码视频一区| 亚洲视频www| 蜜桃日韩视频| 成人看片在线观看| 精品国产依人香蕉在线精品| 91成品人影院| 亚洲免费电影在线| av电影在线播放| 亚洲经典自拍| 欧美lavv| 欧美激情三区| 欧美大片欧美激情性色a∨久久| 99视频在线观看免费| 国产精品成人免费在线| 亚欧精品在线视频| 日韩午夜一区| 日韩福利影院| 成人影院网站ww555久久精品| 久久69精品久久久久久久电影好| 亚洲av无码一区二区乱子伦| 午夜伦理一区二区| 欧美人与禽zoz0善交| 国产在线乱码一区二区三区| 日韩精品一区二区免费| 久久av免费| 成人乱色短篇合集| av资源中文在线| 亚洲欧美一区二区三区四区| 97超碰资源站| 性感美女极品91精品| 国产精品免费无码| 国产成人在线网站| 99爱视频在线| 91精品蜜臀一区二区三区在线| 国产伦精品一区二区| 亚洲a∨精品一区二区三区导航| 久久国产一区二区三区| 视频福利在线| 91精品国产麻豆国产自产在线| 国产精品18p| 国产女人18毛片水真多成人如厕 | 久久九九全国免费精品观看| 日本高清视频在线| 欧美日韩视频在线第一区| 精品无码av在线| 中文一区二区在线观看 | 国产亚洲短视频| 乳色吐息在线观看| 免费成人在线网站| 国产婷婷一区二区三区| 国产精品久久久久蜜臀| 精品一区国产| 亚洲福利合集| 国产精品视频永久免费播放| 国产激情在线播放| 超薄丝袜一区二区| jzzjzzjzz亚洲成熟少妇| 日韩成人中文字幕在线观看| www.色播.com| 欧美日韩电影在线| a片在线免费观看| 午夜精品免费在线观看| 日本少妇高清视频| 国产精品嫩草影院av蜜臀| 熟女丰满老熟女熟妇| 成人午夜精品一区二区三区| 午夜剧场高清版免费观看 | 免费黄频在线观看| 日本欧美一区二区三区乱码| 青娱乐自拍偷拍| 国产精品porn| 欧美 另类 交| 日韩精品欧美激情一区二区| 欧美精品一区二区三区四区五区 | 日本不卡免费新一二三区| 欧美韩一区二区| 9a蜜桃久久久久久免费| 四虎视频在线精品免费网址| 国产精品对白刺激| 天天免费亚洲黑人免费| 7777kkkk成人观看| 国产在线88av| 午夜精品福利在线观看| 青青在线视频| 欧美国产一区二区三区| 性欧美ⅴideo另类hd| 欧美成在线观看| 好吊日视频在线观看| 久久精品国产视频| 精品国产丝袜高跟鞋| 精品国产一区二区三区久久| 生活片a∨在线观看| 久久久精品欧美| caopon在线免费视频| 欧美另类69精品久久久久9999| 国产区在线观看| 精品中文字幕在线2019| 欧美黄色视屏| 午夜精品一区二区三区视频免费看| 成人影院在线播放| 韩国日本不卡在线| 欧美大片免费高清观看| 国产福利精品av综合导导航| 99热播精品免费| 国产日韩在线看片| 中文字幕一区二区三区中文字幕| 5g国产欧美日韩视频| www国产精品| 欧美日韩电影一区二区| 日韩精品久久久久久久电影99爱| 国产91av视频在线观看| 欧美精品一卡| www.av中文字幕| 日日摸夜夜添夜夜添精品视频| 我要看一级黄色大片| 久久99精品久久久久久| 久久久久久无码精品人妻一区二区| 成人午夜av电影| 日韩在线免费观看av| 中文字幕一区二区三区视频| 精品无码久久久久久久| 欧美性黄网官网| 国产精品高潮呻吟AV无码| 精品国产免费视频| 国产青青草在线| 久青草国产97香蕉在线视频| 国产盗摄精品一区二区酒店| 日韩免费在线视频| 国产成人免费视频网站视频社区 | 国模无码视频一区| 欧美国产丝袜视频| 九九热这里有精品视频| 色综合久久综合网97色综合| 国产麻豆91视频| 亚洲免费av片| 综合图区亚洲| 国产盗摄xxxx视频xxx69| 99久久香蕉| 婷婷五月色综合| av成人黄色| 日韩 国产 一区| 久久精品人人做| 久久艹精品视频| 欧美午夜精品久久久| 蜜桃91麻豆精品一二三区| 尤物99国产成人精品视频| av影院在线| 亚洲japanese制服美女| 伊人春色精品| 日韩极品视频在线观看| 麻豆成人av在线| 成人免费av片| 亚洲成人免费电影| 国产精品玖玖玖| 亚洲欧美激情精品一区二区| 日本乱理伦在线| 国产一区红桃视频| 欧美日韩中文一区二区| 免费观看国产精品视频| 国产综合色在线视频区| 国产综合精品在线| 精品女厕一区二区三区| 亚洲第一天堂影院| 久久精品视频在线播放| 免费在线观看一区| 免费在线成人av电影| 亚洲毛片网站| 蜜桃色一区二区三区| 最新久久zyz资源站| 少妇又紧又色又爽又刺激视频| 国产丝袜一区二区三区| 不卡av免费观看| 99三级在线| 亚洲成人三区| 91精品视频国产| 中文一区一区三区高中清不卡| 4438国产精品一区二区| 亚洲精品成a人在线观看| 午夜羞羞小视频在线观看| 亚洲自拍偷拍色图| 欧美不卡视频| 欧美一级特黄aaa| 国产精品久久久久aaaa樱花| 中文字幕人妻一区二区在线视频| 亚洲欧洲视频在线| 成人软件在线观看| 偷拍视频一区二区| 蜜桃av一区二区在线观看| 免费一级特黄3大片视频| 91国产福利在线| 91在线看黄| 成人免费看吃奶视频网站| 91精品精品| 日本青青草视频| 成人福利电影精品一区二区在线观看 | 国产精品99无码一区二区| 欧美成人三级电影在线| 色呦呦在线免费观看| 成人性色av| 亚洲黄色免费| 免费在线观看你懂的| 色婷婷av一区| 成年午夜在线| 国产欧美在线观看| 91精品高清| 日本不卡视频一区| 精品国产乱码久久久久久天美| 无码国产伦一区二区三区视频 | 不卡在线观看av| 99精品视频99| 国产一区二区三区精品久久久| 国产精品蜜月aⅴ在线| 免费观看中文字幕| 粉嫩嫩av羞羞动漫久久久| 日韩av免费网址| 亚洲欧洲午夜一线一品| 国产精品原创视频| www婷婷av久久久影片| 91在线一区二区三区| 日韩精品一区二区亚洲av观看| 日韩小视频在线观看| 日韩高清在线观看一区二区| 霍思燕三级露全乳照| 久久精品在这里| 国产伦精品一区二区三区视频痴汉 | 成人ssswww在线播放| 日本一区二区三区四区在线观看| 久久99精品久久久久久国产越南 | 蜜桃91丨九色丨蝌蚪91桃色| 亚洲波多野结衣| 亚洲国产成人av在线| 国产成人免费9x9x人网站视频| 水蜜桃在线免费观看| 99久久99久久综合| 亚洲中文字幕一区二区| 午夜精品久久久99热福利| 日韩国产一区| 亚洲成av人片在线观看无| 欧美天堂亚洲电影院在线播放| 天天色天天射天天综合网| 欧美精品一区三区在线观看| 国产一区二区调教| 丁香六月婷婷综合| 美女撒尿一区二区三区| 久久av超碰| 亚洲欧美高清在线| 欧美日韩激情一区二区| 僵尸再翻生在线观看免费国语| 中国一区二区三区| 91免费观看国产| www.97av|