乐趣区

关于java:记项目中使用策略模式替代ifelse

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

1. 什么是策略模式?

  • 徐凤年要送一坛酒给陈安全,能够本人送过来也能够顺丰、韵达、菜鸟、中通 ….
  • 这些把酒送到陈安全手里的办法就是徐凤年的送酒策略。
  • 能够依照不同的条件时效(酒曾经开封了,一个时刻送不到就凉凉)、经济(徐凤年经费告急)、情绪等条件抉择不同的送酒策略
  • 当初徐凤年不想思考那么多把送酒的工作交给了小泥人,让小泥人决定如何送酒。
  • 小泥人找了几个天象小弟一人调配一种状况,合乎谁的条件就由谁去送酒。
  • 到此徐凤年就实现了从 if-else 到策略模式的转变。

策略模式次要蕴含

上下文 Context

策略角色

策略执行对象


三局部组成

应用的时候能够再加上策略工厂,和策略枚举类。不便策略的治理

  • 策略工厂

  • 策略枚举

策略模式适宜解决简单业务的多分支场景,策略工厂中须要注入其余属性能够通过 bean 的后置处理器放入。简略状况(执行无参业务)能够通过枚举类解决,不须要创立策略模式这么多类。同业务逻辑仅仅是不同的状况参数不同,则能够应用 map 解决,一个 map 替换掉原来简短的条件逻辑。

退出移动版