设计模式之策略模式与工厂模式的结合

工厂模式:用单独的类来创造实例的过程。

策略模式:定义各种算法并分别封装,且算法的变化不会影响到客户端使用。

例子:商家活动促销

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、方便单元测试每个算法

   

 

你可能感兴趣的:(设计模式之策略模式与工厂模式的结合)