/**
* 策略模式。
* @author Bright Lee
*/
public class StrategyPattern {
public static void main(String[] args) {
int num1 = 1;
int num2 = 2;
int result = 0;
Algorithm algorithm = null;
// 传入加法策略,算法变成了加法:
algorithm = new Algorithm(new AdditionStrategy());
result = algorithm.calucate(num1, num2);
System.out.println(result);
// 传入减法策略,算法变成了减法:
algorithm = new Algorithm(new SubtractionStrategy());
result = algorithm.calucate(num1, num2);
System.out.println(result);
}
}
class Algorithm {
private Strategy strategy;
public Algorithm(Strategy strategy) {
this.strategy = strategy;
}
public int calucate(int num1, int num2) {
return strategy.calucate(num1, num2);
}
}
/**
* 策略接口。
*/
interface Strategy {
int calucate(int num1, int num2);
}
/**
* 加法策略。
*/
class AdditionStrategy implements Strategy {
public int calucate(int num1, int num2) {
return num1 + num2;
}
}
/**
* 减法策略。
*/
class SubtractionStrategy implements Strategy {
public int calucate(int num1, int num2) {
return num1 - num2;
}
}
运行结果:
3
-1