记项目中使用策略模式替代if-else

甄宝玉
• 阅读 2902

今天又遇到了循环嵌套if-else的情况,本想能不能使用老办法使用map替代if-else判断。最后得出结论不管是使用map还是枚举类都只能处理不含参数的简单业务逻辑。最终还是要使用策略模式来解决今天的问题。

1.什么是策略模式?

  • 徐凤年要送一坛酒给陈平安,可以自己送过去也可以顺丰、韵达、菜鸟、中通....
  • 这些把酒送到陈平安手里的方法就是徐凤年的送酒策略。
  • 可以按照不同的条件时效(酒已经开封了,一个时辰送不到就凉凉)、经济(徐凤年经费告急)、心情等条件选择不同的送酒策略
  • 现在徐凤年不想考虑那么多把送酒的任务交给了小泥人,让小泥人决定如何送酒。
  • 小泥人找了几个天象小弟一人分配一种情况,符合谁的条件就由谁去送酒。
  • 到此徐凤年就完成了从if-else到策略模式的转变。

策略模式主要包含

上下文Context

记项目中使用策略模式替代if-else

策略角色

记项目中使用策略模式替代if-else

策略执行对象

记项目中使用策略模式替代if-else
三部分组成

使用的时候可以再加上策略工厂,和策略枚举类。方便策略的管理

  • 策略工厂

记项目中使用策略模式替代if-else

  • 策略枚举

记项目中使用策略模式替代if-else

策略模式适合处理复杂业务的多分支场景,策略工厂中需要注入其他属性可以通过bean的后置处理器放入。简单情况(执行无参业务)可以通过枚举类处理,不需要创建策略模式这么多类。同业务逻辑仅仅是不同的情况参数不同,则可以使用map处理,一个map替换掉原来冗长的条件逻辑。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
3年前
spring中策略模式使用
策略模式工作中经常使用到策略模式工厂模式,实现一个接口多种实现的灵活调用与后续代码的扩展性。在spring中使用策略模式更为简单,所有的bean均为spring容器管理,只需获取该接口的所有实现类即可。下面以事件处理功能为例,接收到事件之后,根据事件类型调用不同的实现接口去处理。如需新增事件,只需扩展实现类即可,无需改动之前的代码。这样即
Wesley13 Wesley13
3年前
00_设计模式之语言选择
设计模式之语言选择设计模式简介背景设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的
Wesley13 Wesley13
3年前
Java 设计模式系列(十二)策略模式(Strategy)
Java设计模式系列(十二)策略模式(Strategy)策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。一、策略模式的结构策略模式是对算
Wesley13 Wesley13
3年前
如何利用策略模式避免冗长的 if
策略模式。在实际的项目开发中,这个模式也比较常用。最常见的应用场景是,利用它来避免冗长的ifelse或switch分支判断。不过,它的作用还不止如此。它也可以像模板模式那样,提供框架的扩展点等等。对于策略模式。本篇我们讲解策略模式的原理和实现,以及如何用它来避免分支判断逻辑。后续我会通过一个具体的例子,来详细讲解策略模式的应用场景以及真正的设计意图
京东云开发者 京东云开发者
1个月前
设计模式-策略模式
作者:京东工业孙磊一、概念策略模式(StrategyPattern)也称为(PolicyParttern)。它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变换,不会影响到使用算法的客户。策略模式属性行为模式。策略模式结构图\二、实际
京东云开发者 京东云开发者
6个月前
设计模式-策略模式
作者:京东工业孙磊一、概念策略模式(StrategyPattern)也称为(PolicyParttern)。它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变换,不会影响到使用算法的客户。策略模式属性行为模式。策略模式结构图\二、实际
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
京东云开发者 京东云开发者
2个月前
设计模式-策略模式
作者:京东工业孙磊一、概念策略模式(StrategyPattern)也称为(PolicyParttern)。它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变换,不会影响到使用算法的客户。策略模式属性行为模式。策略模式结构图\二、实际
甄宝玉
甄宝玉
Lv1
白日放歌须纵酒,青春作伴好还乡。
文章
3
粉丝
0
获赞
0