Java如何优雅替换if-else语句

作者:饭一碗 时间:2023-02-23 10:30:27 

场景

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

本文将介绍三板斧手段:

  • 优先判断条件,条件不满足的,逻辑及时中断返回;

  • 融入策略模式;

  • 策略模式+工厂+单例模式,锦上添花;

接下来先附上一段很久以前自己写的业务代码,核心逻辑就是在支付回调中根据用户购买的价格包赋予用户对应的权益(VIP视频会员天数+抽奖机会次数)。我的天,太多if-else了……(看不清楚可以点击图片放大)

Java如何优雅替换if-else语句

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

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

Java如何优雅替换if-else语句  

Java如何优雅替换if-else语句

2.策略模式改造

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

Java如何优雅替换if-else语句

Java如何优雅替换if-else语句

Java如何优雅替换if-else语句

Java如何优雅替换if-else语句

Java如何优雅替换if-else语句

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

Java如何优雅替换if-else语句

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

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

Java如何优雅替换if-else语句

Java如何优雅替换if-else语句

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

标签:Java,替换,if-else
0
投稿

猜你喜欢

  • c#日志记录帮助类分享

    2021-07-06 16:45:03
  • C#实现多线程的Web代理服务器实例

    2022-02-25 13:32:08
  • android之BroadcastReceiver应用详解

    2021-08-31 16:05:21
  • Android实现系统语言切换功能

    2022-10-24 07:06:34
  • java实现图片上传至本地实例详解

    2023-06-09 03:49:18
  • Java多线程、进度条实现赛马实验的示例代码

    2023-08-20 04:44:10
  • 一键设置java 环境变量 cmd下查看、修改(覆盖与添加)等说明

    2023-03-29 07:09:25
  • Java背包问题求解实例代码

    2023-10-05 06:20:33
  • Android系统添加自定义鼠标样式通过按键切换实例详解

    2022-09-26 21:07:45
  • Android数据持久化之File机制分析

    2021-05-29 19:24:56
  • c#中文转unicode字符示例分享

    2022-05-26 05:07:47
  • SpringBoot中 Jackson 日期的时区和日期格式问题解决

    2021-09-06 19:37:50
  • 详解C语言结构体,枚举,联合体的使用

    2021-10-12 09:37:01
  • java使用链表实现约瑟夫环

    2022-03-21 18:59:35
  • C#通过NPOI操作Excel的实例代码

    2022-01-20 17:26:29
  • Springboot Vue可配置调度任务实现示例详解

    2023-11-09 03:33:19
  • 解析SpringSecurity自定义登录验证成功与失败的结果处理问题

    2021-09-01 16:42:59
  • Unity3D实现鼠标控制视角转动

    2023-11-22 21:18:46
  • Android自定义View实现验证码

    2021-11-08 01:13:31
  • 一篇文章弄懂JVM类加载机制过程以及原理

    2022-01-19 10:32:57
  • asp之家 软件编程 m.aspxhome.com