Spring结合策略模式(理论到实战)

本文介绍了如何在重构项目时使用策略模式替代if-else,以提高代码的可维护性和扩展性。策略模式包括Context封装角色、Strategy抽象策略角色和ConcreteStrategy具体策略角色。以优惠券为例,创建了CouponContext类生成实现CouponStrategy接口的不同优惠策略,并通过遍历判断和应用合适的优惠策略。
摘要由CSDN通过智能技术生成

Spring结合策略模式

背景

最近在重构项目的一个大功能,一开始使用的是通过if-else的方式判断不同的状态来处理不同的业务,最后发现这样做代码可维护性很低,扩展性很差,所以后来改为用策略模式来处理。

定义

策略模式使用的就是面向对象的继承和多态机制,非常容易理解和掌握,我们再来看看 策略模式的三个角色:

  • Context封装角色 它也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问, 封装可能存在的变化。
  • Strategy抽象策略角色 策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性。各位看官可能要问了,类图中的AlgorithmInterface是什么意思,嘿嘿,algorithm是“运算法则”的意思,结合起来意思就明白了吧。
  • ConcreteStrategy具体策略角色 实现抽象策略中的操作,该类含有具体的算法。

实战

概况

我用优惠卷来做为例子,分别有不同的优惠卷(打折券、满减券等等),判断类型来走不同的优惠的策略

原理图

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115110632735.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNTY5NDI3,size_16,color_FFFFFF,t_70

代码

CouponContext类主要是用来生成实现CouponStrategy类的集合,然后通过遍历找到符合条件的优惠卷

@Service
public class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值