一.策略模式
定义一组算法,将每个算法封装起来,并且使他们之间可以互换.策略模式让算法独立于使用它的客户而变化,也称为政策模式
何时使用?一个系统有许多许多类,而区分它们的只是他们直接的行为.
如何解决?将这些算法封装成一个一个的类,任意地替换。
二.代码实现
//策略接口
interface Strategy{
public void doAction();
}
//算法A
class StrategyA implements Strategy{
@Override
public void doAction() {
System.out.println("algorithm A");
}
}
//算法B
class StrategyB implements Strategy{
@Override
public void doAction() {
System.out.println("algorithm B");
}
}
//算法C
class StrategyC implements Strategy{
@Override
public void doAction() {
System.out.println("algorithm C");
}
}
//环境类
class Context{
private Strategy strategy;
public void changeStrategy(Strategy strategy){
this.strategy = strategy;
}
public void dosomething(){
strategy.doAction();
}
public Strategy getStrategy() {
return strategy;
}
}
三.与状态模式区别
可以看出,模板和状态模式基本一致,但是区别就是,状态模式侧重点是一个环境对象目前的状态,会根据状态做出不同的行为,影响整个对象.而策略模式就是侧重于什么时候做什么事