首页 文章详情

设计模式处理 if-else 语句

编程帮 | 636 2021-09-28 04:26 0 0 0
UniSMS (合一短信)

点击上方 蓝字 关注我们!



2021 最新 Java 编程资料免费领!Java 视频教程,Java Web 项目教程,互联网Java 面试真题 / 算法题,简历模板,Linux 服务器等等,点击领取

来源:love1024.blog.csdn.net/

article/details/104955363

  • 场景
    • 1.优先判断条件,不满足及时中断
    • 2.策略模式改造
    • 3.策略模式+工厂+单例模式,锦上添花

场景

日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!

本文将介绍三板斧手段:

  • 优先判断条件,条件不满足的,逻辑及时中断返回;
  • 融入策略模式;
  • 策略模式+工厂+单例模式,锦上添花;

接下来先附上一段很久以前自己写的业务代码,核心逻辑就是在支付回调中根据用户购买的价格包赋予用户对应的权益(VIP视频会员天数+抽奖机会次数)。

我的天,太多if-else了……(看不清楚可以点击图片放大)

图片

1.优先判断条件,不满足及时中断

这点非常容易理解,就是说在业务逻辑里面,先把不符合条件的给先过滤掉,而不是层层嵌套if-else判断,结合代码图看一下:

图片
图片

2.策略模式改造

先用策略模式,替换掉文章开头讲到的,用户充值后根据价格包(付的多少钱)给用户增加VIP天数及抽检机会次数的逻辑,我这里就简化成"根据-价格包区分给用户增加不同的体育会员视频VIP天数"这个动作来讲解:

图片
图片
图片
图片
图片

表面上看,代码稍微优雅了点,但是还是没和if-else彻底说拜拜,且recharge()充值方法可单独拎出来,只需要根据priceCode实例化不同的策略对象即可:

图片

3.策略模式+工厂+单例模式,锦上添花

接下来使用"工厂类+单例"来给代码加点料:

图片
图片
图片

往期推荐

程序员被公司辞退都12天了,前领导要求回公司讲清楚代码

被迫降级降薪,说好的共同富裕呢?

以为工作了十年,其实却只有一年的工作经验,只不过又重复用了九年

Visual Studio 上架微软商店了,你怎么看?

为什么要使用微服务架构和这些组件?

SpringBoot+Redis 如何防止瞬间几千次的重复提交?


END



若觉得文章对你有帮助,随手转发分享,也是我们继续更新的动力。


长按二维码,扫扫关注哦

「C语言中文网」官方公众号,关注手机阅读教程 


学习资料包括: Java,算法,数据库,Linux,简历,运维 等编程分类,在不断更新中哦


点击“阅读原文”,马上免费领取!
👇👇👇
good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter