三种方式,教你优雅的替换if-else语句!

好好学java

共 1346字,需浏览 3分钟

 ·

2021-08-06 20:09

今日推荐
Spring新版本抛弃JVM,可独立部署,网友:要自立门户???
Nginx 常用配置清单
这玩意比ThreadLocal叼多了,吓得我赶紧分享出来。
推荐一些chrome浏览器必装的插件!
40 个 SpringBoot 常用注解
VSCode 花式玩法(摸鱼)收藏一下 !

来源:love1024.blog.csdn.net/article/details/104955363

场景

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

本文将介绍三板斧手段:

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

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

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

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

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

2.策略模式改造

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

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

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

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

Java网站推荐:www.java1000.com,网站包括Java基础、进阶、源码、面试等各个系列文章,欢迎浏览!

Github仓库推荐

https://github.com/OUYANGSIHAI/JavaInterview,复制链接直达,该仓库是本人面试一年的面试记录与分享,相信对你有一定的帮助!


推荐文章


1、14个项目!

2、GitHub 上 6 款牛哄哄的后台模板

3、推荐几个前后端分离项目!

4、一个Github项目搞定微信、QQ、支付宝等第三方登录

5、一款基于 Spring Boot 的现代化社区(论坛/问答/社交网络/博客)


更多项目源码


1、推荐两个项目!

2、重磅推荐:一套开源的网校系统,无论是自建网校还是接副业都很方便

3、一款基于 Spring Boot 的现代化社区(论坛/问答/社交网络/博客)

4、13K点赞都基于 Vue+Spring 前后端分离管理系统ELAdmin,大爱

5、想接私活时薪再翻一倍,建议根据这几个开源的SpringBoot

浏览 11
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报