? ? ? ?策略模式(Strategy Pattern)是属于行为型的设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用它的客户端代码,使得算法的修改和扩展变得更加容易。
?
?
策略模式java代码
// 抽象策略接口
interface Strategy {
int doOperation(int num1, int num2);
}
// 具体策略类:加法策略
class OperationAdd implements Strategy {
@Override
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
// 具体策略类:减法策略
class OperationSubtract implements Strategy {
@Override
public int doOperation(int num1, int num2) {
return num1 - num2;
}
}
// 上下文类
class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void executeStrategy(int num1, int num2) {
System.out.println(strategy.doOperation(num1, num2));
}
// 可以动态改变策略
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Context context = new Context(new OperationAdd()); // 使用加法策略
context.executeStrategy(5, 7); // 输出 12
context.setStrategy(new OperationSubtract()); // 改用减法策略
context.executeStrategy(10, 3); // 输出 7
}
}
?说明:在上面代码中Context
?类持有?Strategy
?对象并在需要执行策略时调用其?doOperation()
?方法。我们可以轻松地在运行时切换不同的?ConcreteStrategy
,从而执行不同的运算策略。
?