行為型設計模式之 策略模式

2021-10-08 02:03:16 字數 1113 閱讀 1082

緊接著上面的模板方法設計模式,當使用者支付時,其實使用者是有優惠活動可以享受的,但是每個使用者的具體情況不同,所選擇的優惠活動是不一樣的,有滿減活動、首次購活動、新會員活動,等等一系列優惠。

為了避免一系列的if ... else的書寫,我們使用策略模式進行優化:

首先是打折的抽象介面:

public inte***ce discount
下面是四種不同的打折策略:

/**

* 滿減

*/public class fulldiscount implements discount

return money;

}}/**

* 假日全免

*/public class holidaydiscount implements discount

return money;

}}/**

* 首次購

*/public class newerdiscount implements discount

return money;

}}/**

* 第二單9折優惠

*/public class seconddiscount implements discount

}

在使用時,只需要將這個折扣物件傳入即可:

shoppingcart cart = new onlineshopping(products);

//注入優惠方案

最終呼叫的是discount的實現類,完成各個策略的最終選擇。

設計模式 行為型 策略模式

更好的實現開閉原則 ocp,openclosedprinciple 即對於擴充套件是開放的,對於修改是關閉的,不修改原有 只擴充套件 策略模式包括三個角色 context 環境類 使用演算法策略,維持乙個抽象策略類的引用例項 strategy 抽象策略類 將所有的策略抽象出來,在該類宣告抽象方法或者...

Java設計模式 行為型 策略模式

在狀態模式下,我們每個人都知道自己會做什麼,應當做什麼,事情本事是固定的,只是根據當前狀態的改變而去選擇不同的事情去做,狀態本身可能會隨著時間的推移不斷的增加或減少。在策略模式下,我們每個人不知道自己會做什麼,應當做什麼,不論什麼事情當需要去做的時候就去完成它,事情本身可能是千變萬化的。生活中的每個...

策略模式(行為型)

思考問題 乙個書店的某類書是免費的,某類書是固定1元的,某類書是按折扣算的 比如88 同一類別的書本 一樣 假定顧客只買一類書,在設計書店bookstore類時應該如何計算顧客買書的費用?解答 1.你有可能不知道如何設計,畢竟上面的計算規則不一樣 並不是一類書8折另一類書9折那樣好計算 2.既然這樣...