证券之星消息,根据天眼查APP数据显示海油工程(600583)新获得一项发明专利授权,专利名为“一种海洋平台井口区甲板模块化安装方法”,专利申请号为C...
2025-10-22 0
先让我们看看百科上的定义:
大概的意思是:
在计算机编程中,策略模式(strategy pattern)是一种行为软件设计模式,允许在运行时选择算法。代码不是直接实现单个算法,而是接收有关使用一系列算法中的哪个算法的运行时指令。
例如,对传入数据执行验证的类可能会使用策略模式来选择验证算法,具体取决于数据类型、数据源、用户选择或其他区分因素。这些因素在运行时之前是未知的,并且可能需要执行完全不同的验证。
策略模式包含以下几个角色:
策略模式的主要目标是将算法的实现与使用算法的代码进行分离,减少各部分之间的耦合度,可以在不影响上下文的情况下自由地修改或扩展算法。其模型图如下:
上面将理论讲述了一通,对策略模式还是似懂非懂。为了更好地理解策略模式,下面我们通过一个简单的Java示例来演示策略模式的应用:
// 策略接口interface PaymentStrategy { void pay(int amount);}// 具体策略类:信用卡支付class CreditCardPayment implements PaymentStrategy { private String cardNumber; public CreditCardPayment(String cardNumber) { this.cardNumber = cardNumber; } @Override public void pay(int amount) { System.out.println("Paid " + amount + " using Credit Card: " + cardNumber); }}// 具体策略类:AliPal支付class AliPalPayment implements PaymentStrategy { private String email; public AliPalPayment(String email) { this.email = email; } @Override public void pay(int amount) { System.out.println("Paid " + amount + " using AliPal: " + email); }}// 上下文class ShoppingCart { private PaymentStrategy paymentStrategy; public void setPaymentStrategy(PaymentStrategy paymentStrategy) { this.paymentStrategy = paymentStrategy; } public void checkout(int amount) { if (paymentStrategy == null) { System.out.println("Payment strategy not set. Cannot proceed to checkout."); return; } paymentStrategy.pay(amount); }}// 测试策略模式public class StrategyPatternDemo { public static void main(String[] args) { ShoppingCart cart = new ShoppingCart(); // 使用信用卡支付 cart.setPaymentStrategy(new CreditCardPayment("1234-5678-9101-1121")); cart.checkout(100); // 使用AliPal支付 cart.setPaymentStrategy(new AliPalPayment("user@alipay.com")); cart.checkout(200); }}
代码解析
在这个示例中,我们有一个支付策略的接口 PaymentStrategy,它定义了 pay(int amount) 方法。我们还有两个具体策略类:CreditCardPayment 和 AliPalPayment,分别实现了不同的支付方式。
ShoppingCart 类是上下文类,用于设置不同的支付策略并进行结账。我们可以轻松地在运行时改变支付策略,而不需要修改 ShoppingCart 的实现。
看完上面的示例,是不是觉得策略模式和多态有点类似,对于一种抽象的方式(接口)可以按照不同的方式(子类)去实现。不过两者还是有差异:
策略模式本身并不是 Java框架的一部分,但在一些流行的框架中可以看到其应用,例如:
策略模式广泛应用于许多场景中,一些典型的应用场景包括:
本文,我们分析了策略模式,它通过将算法与使用算法的代码分离,提供了一种灵活且可扩展的方式来管理算法。尽管在某些情况下会增加系统的复杂度,但它的优点通常能够抵消这些缺点,使得这种模式在许多实际应用中非常有价值。对于想要设计可扩展性和灵活性的系统,策略模式是一个非常有效的设计方案。
相关文章
证券之星消息,根据天眼查APP数据显示海油工程(600583)新获得一项发明专利授权,专利名为“一种海洋平台井口区甲板模块化安装方法”,专利申请号为C...
2025-10-22 0
近日,嘉庚创新实验室牵头起草的我国首个阴离子交换膜制氢领域国家标准已获国家标准化管理委员会正式批准立项,该标准填补了阴离子交换膜制氢领域标准空白,这也...
2025-10-22 0
1. 策略模式是什么?先让我们看看百科上的定义:大概的意思是:在计算机编程中,策略模式(strategy pattern)是一种行为软件设计模式,允许...
2025-10-22 0
在阅读文章前,辛苦您点下“关注”,方便讨论和分享。作者定会不负众望,按时按量创作出更优质的内容文 |昕昕家人们发现没?今年双11卷得那叫一个早,各大平...
2025-10-22 0
在今年双11第一波预售“开门红”中,阿里妈妈交出了一份不只是销售数字的答卷。10月15日晚8点,天猫双11预售开启的首个小时,就有35个品牌成交破亿、...
2025-10-22 0
潮新闻客户端 执笔 李攀 应陶人工智能赋能千行百业,传统生物制药行业也不例外。10月6日,老牌跨国药企阿斯利康宣布,与美国一家生物技术公司签署价值5....
2025-10-22 0
IT之家 10 月 21 日消息,据光年探索官方消息,光年探索(江苏)空间技术有限公司近日成功完成直径 3.8 米不锈钢贮箱试验件的制造。据介绍,该贮...
2025-10-22 1
证券之星消息,根据天眼查APP数据显示迈瑞医疗(300760)新获得一项发明专利授权,专利名为“多通道监测系统、参数测量模块、监护仪和血氧监测系统”,...
2025-10-22 1
发表评论