策略模式(Strategy)是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来,并使它们可以互换。策略模式使得算法可以独立于使用它们的客户端而变化。
下面是一个使用策略模式的示例代码:
// 定义一个策略接口
interface Strategy {
int doOperation(int num1, int num2);
}
// 实现策略接口的具体算法类
class OperationAdd implements Strategy {
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
class OperationSubtract implements Strategy {
public int doOperation(int num1, int num2) {
return num1 - num2;
}
}
class OperationMultiply implements Strategy {
public int doOperation(int num1, int num2) {
return num1 * num2;
}
}
// 定义一个使用策略的上下文类
class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2) {
return strategy.doOperation(num1, num2);
}
}
// 使用策略模式的客户端代码
public class StrategyPatternDemo {
public static void main(String[] args) {
Context context = new Context(new OperationAdd());
System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationSubtract());
System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationMultiply());
System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
}
}在上面的示例代码中,我们定义了一个策略接口 Strategy,并实现了三个具体的算法类 OperationAdd、OperationSubtract 和 OperationMultiply,它们都实现了 Strategy 接口中的 doOperation 方法。
然后我们定义了一个使用策略的上下文类 Context,它包含一个 Strategy 对象,并提供了一个 executeStrategy 方法,用于执行具体的算法。
最后,在客户端代码中,我们创建了一个 Context 对象,并分别传入不同的算法对象,然后调用 executeStrategy 方法执行具体的算法。这样,我们就可以在运行时动态地改变算法,而不需要修改客户端代码。