今日推荐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

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

  1. GIT忽略文件三种方式教你快速解决

    问题描述 当我们使用git提交代码时会产生一些多余文件,包括.idea.target文件以及一些iml配置文件等,每次提交代码的时候需要手动选择出我们真正要提交的文件,十分不方便,接下来三种方式教你解 ...

  2. 陈松松:三种方式教你打造一个行业内10万视频播放量

    这是我写的第82篇原创视频营销文章 陈松松,6年视频营销实战经验 在任何一个行业内, 判断一个视频受不受欢迎, 不管是谁,第一个想到的就是视频播放量. 你的视频播放量高, 哪怕你的视频内容讲的不咋好, ...

  3. perl mysql dml_MySQL Connector执行SQL语句的三种方式

    描述 当我们需要在Java程序中与数据库进行交互,可能首先想到的是使用某个ORM框架,因为ORM框架封装了一些实现细节,在使用上非常方便,并且一定程度上可以提升代码稳定性. 在ORM框架中,都会依赖M ...

  4. 怎么把tiff文件转换为jpg?教你三种方式

    tiff格式转化成jpg格式?相信很多人对于tiff格式较为陌生,我们需要对其进行了解,从而发挥出tiff文件格式的重要作用.通常来说,tiff是一种非失真的压缩格式.tiff文件的压缩主要是应用于文 ...

  5. ActiveMQ持久化消息的三种方式

    本文只介绍三种方式,分别是持久化为文件,MYSql,Oracle.下面逐一介绍. A:持久化为文件 这个你装ActiveMQ时默认就是这种,只要你设置消息为持久化就可以了.涉及到的配置和代码有 < ...

  6. java 异步事件_处理异步事件的三种方式

    在网站开发中,异步事件是项目必然需要处理的一个环节,也因为前端框架的兴起,通过框架实现的 SPA 已经是快速建构网站的标配了,一部获取数据也就成了不可或缺的一环:本文来就讲一讲 JavaScript ...

  7. 数据导入HBase最常用的三种方式及实践分析

    要使用Hadoop,数据合并至关重要,HBase应用甚广.一般而言,需要针对不同情景模式将现有的各种类型的数据库或数据文件中的数据转入至HBase中. 常见方式为:1.使用HBase的API中的Put ...

  8. Eclipse插件安装的三种方式

    Eclipse插件安装总结通过个人的学习体会,将目前Eclipse插件安装的三种方式,总结如下: 第一种方法很简单,在Eclipse的主目录(%ECLIPSE_HOME%)下有一个plugins目录和 ...

  9. 在Tomcat配置JNDI数据源的三种方式

    转载自   在Tomcat配置JNDI数据源的三种方式 在我过去工作的过程中,开发用服务器一般都是Tomcat,数据源的配置往往都是在applicationContext.xml中配置一个dataSo ...

  10. Spring注解依赖注入的三种方式的优缺点以及优先选择

    当我们在使用依赖注入的时候,通常有三种方式: 1.通过构造器来注入: 2.通过setter方法来注入: 3.通过filed变量来注入: 那么他们有什么区别吗?应该选择哪种方式更好? 代码示例: Con ...

最新文章

  1. eplan怎么插入表格_EPLAN电气图实例控制柜(控制面板)
  2. android h5状态栏消息,安卓实现系统状态栏的隐藏和显示
  3. 回馈读者【赠技术书通知】
  4. 485通信实现自动收发功能
  5. 拓端tecdat|R语言状态空间模型:卡尔曼滤波器KFAS建模时间序列
  6. linux内核命令行解析
  7. easyflash 教程
  8. Mysql密码忘记怎么办?重置密码完整教程
  9. 3dmax2020软件安装教程
  10. lisp成套电气设计_关于成套设计转电气设计问题?
  11. matlab的图像句柄 gca gco gcf
  12. Invalid bound statement (not found)出现原因和解决方法
  13. 霍夫变换(Hough)
  14. Cross-modal Pretraining in BERT(跨模态预训练)
  15. Oracle(三)常用的查询语句
  16. 历数金融危机 摘自http://www.ftchinese.com/sc/index.jsp
  17. 游戏夜读 | 写游戏用什么语言?
  18. 一、Mavlink协议
  19. liunx上安装MySQL没有默认my.cnf文件解决方案
  20. 安卓dts音频解码_安卓手机有什么音乐播放软件可以播放DTS音乐的呢?

热门文章

  1. 13、Java——“21点”扑克游戏系统(变量+循环)
  2. 智能座舱现状分析——车厂、零部件厂商篇(比亚迪、TI、大陆)
  3. LinuxProbe学习笔记(八)
  4. PHP 使用 ElasticSearch 做搜索
  5. Web缓存的工作原理
  6. SortedMap接口实现排序
  7. kafka原理以及源码分析
  8. Wireshark工具抓包的数据包分析
  9. 真实评测 i5 12500h和i5 12450h差距大不大
  10. 关于安装完fedora后的一些美化