【設計模式】模板模式——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...