- 定义
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
-
类图
-
案例演示
public class StrategyDemo {
public static void main(String[] args) {
//加法
Context context = new Context(new OperationAdd());
context.executeStrategy(1,2);
//减法
context = new Context(new OperationSubtract());
context.executeStrategy(2,1);
}
}
/**
* 引用策略的具体类
*/
class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2){
int i = strategy.doOperation(num1, num2);
System.out.println(i);
return i;
}
}
/**
* 策略接口
*/
interface Strategy{
int doOperation(int num1, int num2);
}
class OperationAdd implements Strategy{
@Override
public int doOperation(int num1, int num2) {
System.out.println("执行加法之后的值..");
return num1+num2;
}
}
class OperationSubtract implements Strategy{
@Override
public int doOperation(int num1, int num2) {
System.out.println("执行减法之后的值..");
return num1-num2;
}
}
- 执行结果
执行加法之后的值..
3
执行减法之后的值..
1