策略模式通过定义支付接口和多种实现类,使算法可互换且不影响客户端;上下文类动态切换策略,新增方式无需修改代码,符合开闭原则,提升灵活性与维护性。

策略模式是一种行为设计模式,它允许在运行时选择算法或行为。在Java中实现策略模式,关键是将不同的算法封装成独立的类,并使它们可以互相替换,而不会影响使用算法的客户端。
首先定义一个策略接口,声明所有支持的算法共有的操作:
public interface PaymentStrategy {
void pay(double amount);
}
然后创建多个实现该接口的具体策略类,每个类代表一种支付方式:
public class CreditCardPayment implements PaymentStrategy {
private String cardNumber;
public CreditCardPayment(String cardNumber) {
this.cardNumber = cardNumber;
}
@Override
public void pay(double amount) {
System.out.println("使用信用卡 " + cardNumber + " 支付 " + amount + " 元");
}
}
public class AlipayPayment implements PaymentStrategy {
private String account;
public AlipayPayment(String account) {
this.account = account;
}
@Override
public void pay(double amount) {
System.out.println("使用支付宝账号 " + account + " 支付 " + amount + " 元");
}
}
创建一个上下文类,用于持有当前策略对象,并在运行时切换策略:
立即学习“Java免费学习笔记(深入)”;
public class ShoppingCart {
private PaymentStrategy paymentStrategy;
// 设置当前使用的支付策略
public void setPaymentStrategy(PaymentStrategy strategy) {
this.paymentStrategy = strategy;
}
// 执行支付
public void checkout(double amount) {
if (paymentStrategy == null) {
throw new IllegalStateException("未设置支付策略");
}
paymentStrategy.pay(amount);
}
}
在实际使用中,可以根据用户选择动态设置不同的支付方式:
public class Main {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
// 用户选择信用卡支付
cart.setPaymentStrategy(new CreditCardPayment("1234-5678-9012-3456"));
cart.checkout(299.9);
// 切换为支付宝支付
cart.setPaymentStrategy(new AlipayPayment("user@example.com"));
cart.checkout(150.0);
}
}
输出结果:
使用信用卡 1234-5678-9012-3456 支付 299.9 元 使用支付宝账号 user@example.com 支付 150.0 元
基本上就这些。通过策略模式,新增支付方式不需要修改现有代码,只需添加新的实现类,符合开闭原则,也让代码更灵活、易于维护。
以上就是在Java中如何实现策略模式的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号