不渴望能够一跃千里,只希望每天能够前进一步。
光阴易逝,岂容我待。
最近学习了下设计模式,发现了一些问题,记录下来。
目录
在总结上面三个问题回答之前,我们先来写一遍策略模式。
网上的策略模式有多种写法,这里只举栗2种:
首先是没用设计模式之前的代码:
public Result calcPrice(int customerType){
//判断客户类型执行不同计算价格方法
if(customerType == 1){
//计算白银客户优惠价..
}else if(customerType == 2){
//计算黄金客户优惠价..
}else if(customerType == 3){
//计算钻石客户优惠价..
}
.....
else{
//计算xx客户优惠价..
}
}
策略模式第一种写法:
在客户端根据传入的策略类来判断
//价格策略接口
public interface IPriceStrategy{
Result calcPrice();
}
//白银客户价格策略类
public class SilverPriceStrategy implements IPriceStrategy{
Result calcPrice(){
//计算白银客户优惠价..
}
}
//黄金客户价格策略类
public class GoldPriceStrategy implements IPriceStrategy{
Result calcPrice(){
//计算黄金客户优惠价..
}
}
//钻石客户价格策略类
public class DiamondPriceStrategy implements IPriceStrategy{
Result calcPrice(){
//计算钻石客户优惠价..
}
}
...
//价格策略上下文类
public class CustomerPriceContext{
private IPriceStrategy iPriceStrategy;
public CustomerPriceContext(IPriceStrategy iPriceStrategy){
this.iPriceStrategy = iPriceStrategy;
}
public Result calcPrice(){
return this.iPriceStrategy.calcPrice();
}
}
===============================================