明天又遇到了循环嵌套 if-else 的状况,本想能不能应用老办法应用 map 代替 if-else 判断。最初得出结论不论是应用 map 还是枚举类都只能解决不含参数的简略业务逻辑。最终还是要应用策略模式来解决明天的问题。
1. 什么是策略模式?
- 徐凤年要送一坛酒给陈安全,能够本人送过来也能够顺丰、韵达、菜鸟、中通 ….
- 这些把酒送到陈安全手里的办法就是徐凤年的送酒策略。
- 能够依照不同的条件时效(酒曾经开封了,一个时刻送不到就凉凉)、经济(徐凤年经费告急)、情绪等条件抉择不同的送酒策略
- 当初徐凤年不想思考那么多把送酒的工作交给了小泥人,让小泥人决定如何送酒。
- 小泥人找了几个天象小弟一人调配一种状况,合乎谁的条件就由谁去送酒。
- 到此徐凤年就实现了从 if-else 到策略模式的转变。
策略模式次要蕴含
上下文 Context
策略角色
策略执行对象
三局部组成
应用的时候能够再加上策略工厂,和策略枚举类。不便策略的治理
- 策略工厂
- 策略枚举
策略模式适宜解决简单业务的多分支场景,策略工厂中须要注入其余属性能够通过 bean 的后置处理器放入。简略状况(执行无参业务)能够通过枚举类解决,不须要创立策略模式这么多类。同业务逻辑仅仅是不同的状况参数不同,则能够应用 map 解决,一个 map 替换掉原来简短的条件逻辑。