策略模式
定义
策略模式封装一系列算法,并能够根据用户选择具体算法。易于扩展新策略,符合开闭原则(OCP)。
![]()
举个实例
例如:系统根据用户选择的付款方式执行不同的支付逻辑:如支付宝、微信、银联等。
- 定义策略接口
public interface PaymentStrategy { void pay(int amount); } - 实现不同的策略
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 + " 元");
}
}
- . 定义上下文类
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);
}
}