角色构成:
context:用来操作策略的上下文环境
public class ContextStragety {
CalculatorStragety strategy;
public void setStrategy(CalculatorStragety strategy) {
this.strategy = strategy;
}
public int calculate(int a) {
return strategy.calculate(a);
}
}
Stragety:策略的抽象
public interface CalculatorStragety {
int calculate(int a);
}
ConcreateStragety:具体的策略实现
public class FirstStragety implements CalculatorStragety {
@Override
public int calculate(int a) {
return a+a;
}
}
public class SecondStragety implements CalculatorStragety {
@Override
public int calculate(int a) {
return a*a;
}
}
client调用
/**
* 测试策略模式:属性动画中的插值器的interpolator就是策略模式的代表
*
* 优点:结构清晰,方便拓展,数据更为安全,耦合度较低,主要用于分离算法
*
* 缺点:策略增加,类的增加。
*
*/
public void testStrategyMode() {
ContextStragety strategy = new ContextStragety();
strategy.setStrategy(new FirstStragety());
// strategy.setStrategy(new SecondStragety());
strategy.calculate(88);
}