設計模式 策略模式 支付案例

2021-10-09 10:19:39 字數 1757 閱讀 8536

【設計模式】模板模式——jdbc案例

【設計模式】介面卡模式——登入案例

【設計模式】委派模式——登入案例

支付時,會有很多引數,很多邏輯,經常會遇到一種支付方式,上百行的**,而且還需要很好的把控事務。如果多種支付方式,**也會成倍的**。維護起來相當難受。

**如下(示例): (

"/makeorder"

)public resultdata makeorder

(@requestbody order order)

else

if(order.gettype==

"weixin"

)else

if(order.gettype==

"jd"

)else

if(order.gettype==

"yunshanfu"

)// 傳送到mq,進行廣播。

return

this.ok

(order);}

相信**肯定會很多,而且if/else來處理會顯得**很雜亂。或者有通過增加介面來減少if/else

("/alipay"

)public resultdata makeorder

(@requestbody order order)

("/jdpay"

)public resultdata makeorder

(@requestbody order order)

現在邏輯少,**不會顯得雜亂,如果有很多種支付方式呢?**會顯得很雜亂,而且擴充套件受限。

**如下(入口):

private orderservice orderservice;

("/makeorder"

)// 商品id

// 支付型別

public resultdata makeorder

(long goodsid,string type)

**如下(支付方式):

public

enum paytype

//通過get方法獲取支付方式

public payment get()

public

static paytype getbycode

(string paytype)

}return null;

}}

**如下(支付介面):

public

inte***ce

payment

**如下(支付寶支付實現):

public

class

alipay

implements

payment

}

public

class

wechatpay

implements

payment

}

通過列舉來優雅的選擇支付型別,共用乙個支付介面,不同的支付方式實現自己的邏輯,更加貼合物件導向的思想。這種方式相對與if/else更加優雅。

但是,其實這樣一看,哇,使用策略模式,建立了好多類,好麻煩的樣子,還是使用if/else**少一點,但是長遠來說,支付的邏輯一定是錯綜複雜,通過策略模式可以更加友好的進行擴充套件。但是if/else進行擴充套件,**會比較冗餘,如果本來就沒幾行**,缺強制使用策略模式,無意是畫蛇添足。

經典案例 Python詳解設計模式 策略模式

完成一項任務往往有多種方式,我們將其稱之為策略。比如,超市做活動,如果你的購物積分滿1000,就可以按兌換現金抵用券10元,如果購買同一商品滿10件,就可以打9折,如果如果購買的金額超過500,就可以享受滿減50元的優惠。這是三個不同的 策略。再比如,去外出旅遊,我們可以選擇火車,也可以選擇公共汽車...

乙個支付案例,學會策略模式!

策略模式的特點是不管過程怎麼樣,結果都是一樣的。不管乘坐飛機還是火車,最後都會到達北京 不管哪種支付方式,最終都會支付成功。過程不一樣,結果都一樣。支付時,會有很多引數,很多邏輯,經常會遇到一種支付方式,上百行的 而且還需要很好的把控事務。如果多種支付方式,也會成倍的 維護起來相當難受。如下 示例 ...

php設計模式之策略模式應用案例詳解

策略程式設計客棧模式 定義 策略模式定義一系列的演算法,將每個演算法封裝起來,並讓它們可以相互裝換。策略模式讓演算法獨立於使用它的客戶而獨立變化。角色分析 應用場景 實現 created by phpstorm.author zhaorui date 2019 2 27 time 10 55 hea...