策略模式

策略模式

策略模式

定义

策略模式封装一系列算法,并能够根据用户选择具体算法。易于扩展新策略,符合开闭原则(OCP)

策略模式 UML


举个实例

例如:系统根据用户选择的付款方式执行不同的支付逻辑:如支付宝、微信、银联等。

  1. 定义策略接口
    public interface PaymentStrategy {
        void pay(int amount);
    }
    
  2. 实现不同的策略
public class AlipayStrategy implements PaymentStrategy {
    @Override
    public void pay(int amount) {
        System.out.println("使用支付宝支付了:" + amount + "");
    }
}

public class WeChatPayStrategy implements PaymentStrategy {
    @Override
    public void pay(int amount) {
        System.out.println("使用微信支付了:" + amount + "");
    }
}

public class UnionPayStrategy implements PaymentStrategy {
    @Override
    public void pay(int amount) {
        System.out.println("使用银联支付了:" + amount + "");
    }
}
  1. . 定义上下文类
public class PaymentContext {
    private PaymentStrategy strategy;

    public void setStrategy(PaymentStrategy strategy) {
        this.strategy = strategy;
    }

    public void pay(int amount) {
        if (strategy == null) {
            throw new IllegalStateException("Payment strategy is not set.");
        }
        strategy.pay(amount);
    }
}