java 策略模式会员_干货,策略模式你不知道的

百度一搜,策略模式想必各类文章都有,今天讲一讲你在其他地方看不到的策略模式的思想。代码谁都会写,思想不是谁都有的。

策略模式

上节我们稍微的探讨了下SpringSession中包含的设计模式。SpringSession 设计模式分析这节我们应用下SpringSession 所涉及的策略模式。

ea6ff9cbe07624ebb5b869da31040f0f.png策略模式的UML图

假设鹅厂推出了2种会员,分别为会员,超级会员,还有就是普通玩家,针对不同类别的玩家,购买《王者农药》皮肤有不同的打折方式。

第一步设计顶级接口

d414dc359df4eeb7c32fcac3e850202f.png

第二步各级策略实现

db47805f82356d026028b0134d9e4abf.png普通用户算价

6385409125cc66f0a0ae538a96df4b71.pngVip算价

843bd5013aadec493568997e50e6e94e.pngsuperVIP算价

第三步 对外提供统一算价入口

这样做的好处有

1. 如果以后需要在算价前或者算价后做统一处理的话只需要修改对外提供的类,调用方可以不用修改

2. 层次清晰,收拢策略算价入口。

d14857d9e27218e9befecedc746ed8d9.png

看到截图有没有疑问,为什么是使用List calPrices ,而不是使用CalPrice calPrice (List calPrices以下称为多,CalPrice calPrice 称为一)? 记住一点,一只是多的一种特殊情况,满足了多的情况肯定是可以满足一的情况的。比如我要计算VIP + SuperVIP的价格之和,一的情况是不是需要调用两次,多的情况是不是只需要调用一次?

第四步 需求增加

突然有一天,产品拍脑瓜子一想。我们应该搞个 '超级无敌VIP',这种VIP买所有的东西都是5折。

现在我们程序应用了策略模式,因此对于产品的这种新增的需求简直就是小case。只要新增这种VIP对应的算价策略就可以了。

eec764a4ad5cfa754788b44343facaf1.png

总结

策略模式的优点:职责单一,层次清晰,易于扩展,减少if-else的编写。其实还有一点很多网络文章都没有提到,这种模式可以最大程度的减少对现有代码的破坏。这怎么理解,因为不用去修改原来稳定的代码,只是新增代码,原来怎么跑的还是怎么跑,所以最坏的情况就你新增的代码有问题罢了。我们写代码最怕的就是修改原来的代码,逻辑简单还好,逻辑复杂那就gg.

不定期的更新Java技术文章。欢迎关注!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值