在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。
意图
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。
实现
实现如下
按照不同的策略进行运算
- 创建接口
public interface Strategy{
int doOperation(int num1,int num2);
}
- 实现接口
public class Add implements Strategy{
@Override
public int doOperation(int num1, int num2) {
return num1+num2;
}
}
public class Substract implements Strategy{
@Override
public int doOperation(int num1, int num2) {
return num1-num2;
}
}
- 实现环境
public class Context{
private Strategy mStrategy;
public Context(Strategy mStrategy) {
this.mStrategy = mStrategy;
}
public void execute(int num1,int num2){
System.out.println("execute "+mStrategy.doOperation(num1, num2));
}
}
- 使用
public void main(String... args){
Context context;
context = new Context(new Add());
context.execute(1,5);
context = new Context(new Substract());
context.execute(6,5);
}
- 结果
I/System.out: execute 6
I/System.out: execute 1