🎯 一种行为型设计模式,通过封装不同算法或行为,使它们可以动态替换解耦业务逻辑。

核心特点

  1. 封装变化
    • 将算法(如排序、支付方式)抽象为独立类,避免逻辑混杂
  2. 动态绑定
    • 运行时根据需求切换策略,如用户权限校验、日志记录级别
  3. 开闭原则
    • 对扩展开放(新增策略无需修改已有代码),对修改关闭

实际应用示例

📦 场景:电商系统的支付方式选择

  • 支持支付宝、微信、银联等不同支付策略
  • 通过接口统一调用,具体实现类可动态注入
// 策略接口
public interface PaymentStrategy {
    void pay(double amount);
}

// 具体策略:支付宝
public class Alipay implements PaymentStrategy {
    public void pay(double amount) {
        System.out.println("通过支付宝支付 ¥" + amount);
    }
}

// 上下文类
public class Order {
    private PaymentStrategy strategy;
    public void setStrategy(PaymentStrategy strategy) {
        this.strategy = strategy;
    }
    public void executePayment(double amount) {
        strategy.pay(amount);
    }
}

适用场景

  • 需要支持多种算法或行为的场景
  • 算法可能频繁变更或扩展的场景
  • 想要避免条件判断(如 if-else)的场景

🔗 想了解更多设计模式?可以访问 /design-patterns/observer 查看观察者模式的实现细节。

strategy_pattern