工厂模式:用单独的类来创造实例的过程。
策略模式:定义各种算法并分别封装,且算法的变化不会影响到客户端使用。
例子:商家活动促销
1、结算接口:用来定义计算的公共接口
Interface Cash{
calculate(money){}
}
2、算法一:正常返回
class CashNormal implement Cash{
calculate(money){
return money
}
}
}
算法二:打折扣
class CashRebate implement Cash{
CashRebate(rebate){this.Rebate=rebate}
calculate(money){return money*reabte}
}
3、CashContext:用来维护Cash对象的引用以及封装了工厂,与客户端解耦
class CashContext{
Cash cs;
CashContext(String type){
switch (type){
case "normal":
cs=new CashNormal();
break;
case "rebate":
cs=new CashRebate("0.8");
break;
}
}
getResult(money){
return cs.calculate();
}
}
4、客户端
new CashContext(type).getResult();
策略模式使用场景:需要在不同的时间用用不同的业务规则。
优势:1、客户端和算法解耦合,
2、方便单元测试每个算法