本文共 1917 字,大约阅读时间需要 6 分钟。
策略模式(Strategy Pattern)是一种行为模式,允许一个类的行为或算法在运行时进行动态更改。它通过封装不同的算法(策略)并通过一个context对象来实现行为的统一管理。
策略模式的主要意图是将一系列算法封装到独立的策略类中,使这些算法能够被动态地切换和替换。这种设计模式可以有效减少使用if-else语句带来的代码复杂性。
传统的if-else语句虽然简单易用,但随着算法种类的增加,代码复杂度和维护成本会显著提高。策略模式通过动态策略切换,避免了这种复杂性,使代码更易维护且扩展性强。
以下是一个使用Java语言实现策略模式的示例:
// 定义策略接口public interface Strategy { int doOperation(int num1, int num2);}// 实现加法操作public class OperationAdd implements Strategy { @Override public int doOperation(int num1, int num2) { return num1 + num2; }}// 实现减法操作public class OperationSubtract implements Strategy { @Override public int doOperation(int num1, int num2) { return num1 - num2; }}// 实现乘法操作public class OperationMultiply implements Strategy { @Override public int doOperation(int num1, int num2) { return num1 * num2; }}// 上下文类,持有当前使用的策略public 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)); }}
转载地址:http://jzgoz.baihongyu.com/