策略模式(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 方法执行具体的算法。这样,我们就可以在运行时动态地改变算法,而不需要修改客户端代码。