在業務需求中,會有一個相同的結果,但會用到不用的算法。比如商場打折促銷,結果都是給商品打折,但是打折的方式不一樣。算法不一樣。是以就要用政策者模式,用類把這些算法封裝起來,建立一個簡單工廠,然後在用一個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的三個子類做互動。進而降低了耦合