大話設計模式--策略者模式
阿新 • • 發佈:2019-01-04
在業務需求中,會有一個相同的結果,但會用到不用的演算法。比如商場打折促銷,結果都是給商品打折,但是打折的方式不一樣。演算法不一樣。所以就要用策略者模式,用類把這些演算法封裝起來,建立一個簡單工廠,然後在用一個context類來與客戶端做交流。如:
package effective.Strategist; public class CashContext { private CashSuper cash;//具有相同行為抽象的類 public CashContext(CashSuper cashSuper){ this.cash=cashSuper; } public double getResult(double money){ return cash.acceptCash(money); } public static void main(String[] args) { CashContext cc = null; String aa = "1";//比如這是與客戶端接收的請求引數 switch(aa){ case "1": cc = new CashContext(new CashRebute());//相同行為的不同實現 case "2": cc = new CashContext(new CashReturn()); case "3": cc = new CashContext(new CashNormal()); } } }
這樣的好處就是在處理中,客戶端只要跟
CashContext 做交流就行,免去了與CashSuper的三個子類做互動。從而降低了耦合