/**
* 策略模式。
* @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
榴芒客服系统:https://blog.youkuaiyun.com/look4liming/article/details/83146776
本文通过一个具体的示例,介绍了策略模式在算法选择中的应用。策略模式允许在运行时选择不同的算法,通过定义一系列的算法并将每个算法封装起来,使它们可以互相替换。本文展示了如何使用策略模式实现加法和减法算法的选择,以及如何在运行时改变算法。
1860

被折叠的 条评论
为什么被折叠?



