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

策略模式是一种行为设计模式,它允许在运行时选择算法或行为。在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免费学习笔记(深入)”;
在Android
本文档主要讲述的是在Android-Studio中导入Vitamio框架;介绍了如何将Vitamio框架以Module的形式添加到自己的项目中使用,这个方法也适合导入其他模块实现步骤。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
0 查看详情
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中如何实现策略模式的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1095124.html
微信扫一扫
支付宝扫一扫