策略模式
1、定义
策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
2、结构图
3、代码
(1)策略接口
public interface IStrategy { public int calculate(int a, int b); }
(2)加法算法实现IStrategy
public class AddStrategy implements IStrategy {
@Override
public int calculate(int a, int b) {
return a + b;
}
}
(3)减法算法实现IStrategy
public class SubStrategy implements IStrategy {
@Override
public int calculate(int a, int b) {
return a - b;
}
}
(4)Context
public class Context {
private IStrategy strategy;
public int calculate(int a, int b){
return strategy.calculate(a, b);
}
public void setStrategy(IStrategy strategy) {
this.strategy = strategy;
}
}
(5)客户端调用
public class Client {
public static void main(String[] args) {
Context context = new Context();
IStrategy addStrategy = new AddStrategy();
context.setStrategy(addStrategy);
System.out.println(context.calculate(4, 2));;
IStrategy subStrategy = new SubStrategy();
context.setStrategy(subStrategy);
System.out.println(context.calculate(4, 2));;
}
}
4、总结
策略模式的好处在于你可以动态的改变对象的行为。