策略模式(Strategy Pattern)——灵活的算法选择

策略模式是一种设计模式,用于封装不同算法并允许在运行时动态选择。上下文对象使用策略对象来执行特定算法,策略接口定义算法族,而具体策略实现这些算法。常见应用场景包括排序、支付系统和数据校验。策略模式的优点是提高代码灵活性,避免条件判断,但也可能导致较多的策略类,增加维护复杂性。
摘要由CSDN通过智能技术生成

策略模式



一、介绍

策略模式是一种常用的设计模式,它可以帮助我们在软件开发中更好地组织和管理算法。在策略模式中,我们将不同的算法封装成独立的策略类,然后在运行时根据需要选择合适的策略来执行。

策略模式通常由三个主要组件组成:
上下文(Context): 上下文是策略模式的使用者,它负责将客户端的请求委派给具体的策略对象,并且可以在运行时动态地更换策略。
策略(Strategy): 策略是一个接口或抽象类,它定义了一个算法族的公共接口。不同的具体策略类实现了这个接口,每个策略类封装了一个具体的算法。
具体策略(Concrete Strategy): 具体策略是策略模式的核心,它实现了策略接口,定义了具体的算法。在运行时,上下文对象会根据需要选择合适的具体策略来执行。

二、如何使用策略模式

1.经典策略模式的实现

代码如下(示例):


// 使用策略模式,我们可以轻松地扩展和维护不同的促销策略,而不需要修改上下文类。这样,我们就实现了算法的解耦和动态切换。
interface PricingStrategy {
   
    double calculatePrice(double originalPrice);
}
// 不打折
class RegularPricingStrategy implements PricingStrategy {
   
    public double calculatePrice(double originalPrice) {
   
        return originalPrice; 
    }
}
// 八折优惠
class DiscountPricingStrategy implements PricingStrategy {
   
    public double calculatePrice(double originalPrice) {
   
        return originalPrice * 0.8; 
}

// 设置不同的促销策略
class ShoppingCart {
   
    private PricingStrategy pricingStrategy;
    
    public void setPricingStrategy(PricingStrategy pricingStrategy
  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值