策略模式的原理和应用?

设计模式面试题发布于

一、定义

定义一系列算法,封装成独立策略类,使它们可互换。客户端运行时选择策略,避免大量 if-else。

二、结构

  • Strategy:策略接口。
  • ConcreteStrategy:具体策略实现。
  • Context:持有策略引用,调用策略方法。

三、示例

public interface PayStrategy { void pay(double amount); }
public class Alipay implements PayStrategy { ... }
public class WechatPay implements PayStrategy { ... }

public class PayContext {
    private PayStrategy strategy;
    public PayContext(PayStrategy strategy) { this.strategy = strategy; }
    public void pay(double amount) { strategy.pay(amount); }
}

四、Spring 应用

Spring 的 Resource(资源访问策略)、BeanPostProcessor 都体现了策略模式。