策略模式
大约 1 分钟
什么是策略模式?
策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法或策略。通过将算法封装在独立的类中,可以在不同的上下文中灵活地替换它们。
何时使用
- 多种算法可选:当有多种可替代的算法,在运行时需要选择其中一个。
- 算法频繁变化:当算法实现可能发生变化时,可以方便地替换。
- 避免条件语句:当代码中有多个条件语句来选择算法时,策略模式可以提高代码的可读性和可维护性。
示例
// 策略接口
interface Strategy {
int execute(int a, int b);
}
// 具体策略A:加法
class AdditionStrategy implements Strategy {
@Override
public int execute(int a, int b) {
return a + b;
}
}
// 具体策略B:减法
class SubtractionStrategy implements Strategy {
@Override
public int execute(int a, int b) {
return a - b;
}
}
// 上下文类
class Context {
private Strategy strategy;
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public int executeStrategy(int a, int b) {
return strategy.execute(a, b);
}
}
// 客户端
public class StrategyPatternExample {
public static void main(String[] args) {
Context context = new Context();
context.setStrategy(new AdditionStrategy());
System.out.println("Addition: " + context.executeStrategy(5, 3)); // 输出 8
context.setStrategy(new SubtractionStrategy());
System.out.println("Subtraction: " + context.executeStrategy(5, 3)); // 输出 2
}
}