🎯 一种行为型设计模式,通过封装不同算法或行为,使它们可以动态替换并解耦业务逻辑。
核心特点
- 封装变化
- 将算法(如排序、支付方式)抽象为独立类,避免逻辑混杂
- 动态绑定
- 运行时根据需求切换策略,如用户权限校验、日志记录级别
- 开闭原则
- 对扩展开放(新增策略无需修改已有代码),对修改关闭
实际应用示例
📦 场景:电商系统的支付方式选择
- 支持支付宝、微信、银联等不同支付策略
- 通过接口统一调用,具体实现类可动态注入
// 策略接口
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 查看观察者模式的实现细节。