优雅的替换if-else语句

简介: 优雅的替换if-else语句

场景

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


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

融入策略模式;

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

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

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

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

2.策略模式改造

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


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

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

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

我是 JavaPub,三观很正,乐于创业,喜欢烹饪。今年已近年中,各位小伙伴一定已经拿到自己心仪的offer,但是不要忘记进步,共勉!


目录
相关文章
|
7月前
|
设计模式 算法 Java
替换if...else的锦囊妙计
替换if...else的锦囊妙计
|
7月前
|
程序员 Python
if语句的一般形式
if语句的一般形式
73 0
|
7月前
|
存储 算法 Java
C++001-初识C++与C++输出语句
C++001-初识C++与C++输出语句
|
算法 C++
C++(注释语句)
C++(注释语句)
|
SQL 安全 关系型数据库
为什么PDO 在执行 SQL 语句时会自动对输入的参数进行转义和类型转换?
为什么PDO 在执行 SQL 语句时会自动对输入的参数进行转义和类型转换?
213 0
变量替换
变量替换
107 0
|
关系型数据库 MySQL
全局替换字符命令
全局替换字符命令
74 0
|
存储 物联网 Shell
SQLite 删除语句和匹配条件 | 学习笔记
快速学习 SQLite 删除语句和匹配条件
|
Shell
Shell数组变量定义-获取-拼接-删除
Shell数组变量定义-获取-拼接-删除
157 0
|
SQL PHP 数据库
Python:正则re.sub实现SQL命名占位符替换
Python:正则re.sub实现SQL命名占位符替换
269 0