策略+IOC 消灭ifelse,拿来吧你

前言

策略模式 简单来说就是定义了一个算法的大家族,分别封装起来,让他们之间可以互相替换,算法的变化不会影响到使用算法的用户

简单来说,你的女朋友 618 在淘宝买东西,有许多折扣活动,比如满减、折扣、0元购

普通的实现的话,就是这样

不对,你没有女朋友,但是!这并不影响我们理解策略模式,我们继续

策略模式本质就是用来消除 上图的ifelse 带给我们的恐惧

接下来让我们实践一下

实现一下

我们先定义一个促销接口 PromotionStrategy

接下来三种的促销策略全部去实现这个促销接口,不一一贴图了

我们拿0元购的 FeeStrategy 举例

我们还可以写一个 DefaultStrategy 在外部瞎传促销类型的时候,进行一个默认的促销活动

ok,接下来,容器出场前,先看看我们的促销类型的枚举EnumPromotionType

我们希望通过传递进来的促销类型,找到对应的交给容器管理的 bean

举个🌰,我当前传递进来 2-折扣,希望我可以找到 DisCountStrategy 这个 bean,这样我就可以去调用它的方法

来,看看代码

ok,这样就获得了我们对应的促销类型的实现类了

改造一下文章开头的一堆 ifelse

现在看起来,是不是清爽了许多

以后需要在增加策略活动的时候,比如 买车送女朋友

只需要补充枚举类,和在写一个实现类即可。不需要再 ifelse

总结

  • 策略模式是一种较为好理解的设计模式,它可以与多种设计模式结合,当然第一出发点是我们的业务场景

  • 通过策略设计模式的使⽤可以把我们⽅法中的if语句优化掉,满足我们的开闭原则,大大增加我们的扩展性

  • 那么,留给大家一个问题,我们框架中哪些方法用到了策略模式?


文章结束 🤣 如果你需要本文代码,请私信作者

如果文章对你有所帮助的话,那就点个赞吧

更多分享尽在 Skow 的微信公众号

公众号回复 “资料” 可以获取大厂面试题/技术文档/电子书等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值