资讯专栏INFORMATION COLUMN

Map+函数式接口方法替换if/else

IT那活儿 / 3065人阅读
Map+函数式接口方法替换if/else

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!





if/else



1. 需求

项目中根据数据库字段type的不同,会有不同的处理逻辑。
现在假设一个场景:
根据优惠券的类型resourceType和编码resourceId来 查询 发放方式grantType和领取规则。
2. 实现方式
根据优惠券类型resourceType -> 确定查询哪个数据表。
根据编码resourceId -> 到对应的数据表里边查询优惠券的派发方式grantType和领取规则。
优惠券有多种类型,分别对应了不同的数据库表:
  • 红包 —— 红包发放规则表

  • 购物券 —— 购物券表

  • QQ会员

  • 外卖会员

实际的优惠券远不止这些,这个需求是要我们写一个业务分派的逻辑。
第一个能想到的思路就是if-else或者switch case:
如果要这么写的话, 一个方法的代码可就太长了,影响了可读性。(别看着上面case里面只有 一句话,但实际情况是有很多行的)。





策略模式优化if/else




策略模式在业务逻辑分派的时候还是if-else,只是说比第一种思路的if-else 更好维护一点。
但缺点也明显:
1)如果 if-else的判断情况很多,那么对应的具体策略实现类也会很多,上边的具体的策略实 现类也会增多。
2)没法俯视整个分派的业务逻辑。





Map+函数接口



用上了Java8的新特性lambda表达式。
判断条件放在key中;
对应的业务逻辑放在value中。
这样子写的好处是非常直观,能直接看到判断条件对应的业务逻辑。
如果单个 if 语句块的业务逻辑有很多行的话,我们可以把这些业务操作抽出来,写成一个多带带的Service,即:
入参String resourceId是用来查数据库的,这里简化了,传参之后不做处理。
用http调用的结果:




总  结



策略模式通过接口、实现类、逻辑分派来完成,把 if语句块的逻辑抽出来写成一个类,更好维护。
Map+函数式接口通过Map.get(key)来代替 if-else的业务分派,能够避免策略模式带来的类增多、难以俯视整个业务逻辑的问题。



本文作者:牛 森

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129591.html

相关文章

  • 编程范 —— 函数编程入门

    摘要:在函数式编程中数据在由纯函数组成的管道中传递。函数式编程中函子是实现了函数的容器下文中将函子视为范畴,模型可表示如下但是在函数式编程中要避免使用这种面向对象的编程方式取而代之对外暴露了一个的接口也称为。 showImg(https://segmentfault.com/img/remote/1460000018101204); 该系列会有 3 篇文章,分别介绍什么是函数式编程、剖析函数...

    flyer_dev 评论0 收藏0
  • JavaScript函数编程入门经典

    摘要:函数式编程的定义函数是一段可以通过其名称被调用的代码。纯函数大多数函数式编程的好处来自于编写纯函数,纯函数是对给定的输入返回相同的输出的函数,并且纯函数不应依赖任何外部变量,也不应改变任何外部变量。 一个持续更新的github笔记,链接地址:Front-End-Basics,可以watch,也可以star。 此篇文章的地址:JavaScript函数式编程入门经典 正文开始 什么是函...

    silvertheo 评论0 收藏0
  • 攻克前端javascript面试:什么是函数编程?

    摘要:仅在几年以前,仅有少数的程序员知道函数式编程是什么。函数式编程是声明性的而不是命令式的应用状态流经纯函数中。函数式编程是一种编程模式。在理解软件是如何使用函数式编程构建时,理解函数组合是非常重要的一步。不可变性是函数式编程的核心概念。 函数式编程已然变成了一个javascript语言中一个非常热门的话题。仅在几年以前,仅有少数的js程序员知道函数式编程是什么。但是在过去三年中,我所见过...

    wslongchen 评论0 收藏0
  • 函数入门(什么是函数编程)

    摘要:第一节函数式范式什么是函数式编程函数式编程英语或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。 第一节 函数式范式 1. 什么是函数式编程 函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对...

    StonePanda 评论0 收藏0
  • js函数编程术语总结

    摘要:而纯函数,主要强调相同的输入,多次调用,输出也相同且无副作用。对于组合可能不返回值的函数很有用在其它的一些地方,也称为,也称为,也称为 参考文档1 参考文档2 函数式编程术语 高阶函数 Higher-Order Functions 以函数为参数的函数 返回一个函数的函数 函数的元 Arity 比如,一个带有两个参数的函数被称为二元函数 惰性求值 Lazy evaluation 是...

    番茄西红柿 评论0 收藏0
  • 编写扁平化的代码

    摘要:原文作者给你的代码增加一点点函数式编程的特性最近我对函数式编程非常感兴趣。对我而言,函数式编程最大的作用就是强制你编写声明性代码代码描述你做什么,而不是在描述如何做。事实证明,编写声明式代码是函数式编程中最简单的部分之一。 原文:Writing flat & declarative code作者:Peeke Kuepers -- 给你的代码增加一点点函数式编程的特性 最近我对函数式编程...

    lunaticf 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<