一.什么是策略模式
策略模式就是定义各种算法,将他们封装起来,并且可以相互互换。
二.策略模式怎么写
先上张UML类图
这个就是简单的策略模式,Context 持有算法策略接口,客户端调用时,传递不同的算法策略,就会得到不同的结果,它的优点就是算法可以自由切换,可以避免使用多重条件判断。 扩展性良好,缺点也很明显就是策略类会暴涨,策略是对外暴露的。先看看这个模式的实现代码吧:
public interface Strategy {
double calculate(double a,double b);
}
public class ConcretePlus implements Strategy {
@Override
public double calculate(double a,double b) {
return a+b;
}
}
public class ConcreteMinus implements Strategy{
@Override
public double calculate(double a, double b) {
// TODO Auto-generated method stub
return a-b;
}
}
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy=strategy;
}
public Double getResult(double a,double b) {
return strategy.calculate(a,b);
}
}
public class Client {
public static void main(String[] args) {
Context context=null;
context=new Context(new ConcreteMinus());
context=new Context(new ConcretePlus());
context.getResult(12, 13);
}
}
三.小结
以上就是要今天说的策略模式,策略模式的优缺点都很明显,利用java多态的特性,缺点就是暴露的太多。如果您觉得本文对您有所帮助,欢迎点赞或留下评论,如果觉得本文还要不足之处,也欢迎您在下方吐槽,谢谢!