策略模式——一个小技巧就彻底消除了多重 if else

定义

策略模式(Strategy Design Pattern):封装可以互换的行为,并使用委托来决定要使用哪一个。

策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。

用人话翻译后就是:运行时我给你这个类的方法传不同的 “key”,你这个方法就去执行不同的业务逻辑。

你品,你细品,这不就是 if else 干的事吗?

先直观的看下传统的多重 if else 代码


  1. public String getCheckResult(String type) { 
  2.   if ("校验1".equals(type)) { 
  3.     return "执行业务逻辑1"
  4.   } else if ("校验2".equals(type)) { 
  5.     return "执行业务逻辑2"
  6.   } else if ("校验3".equals(type)) { 
  7.     return "执行业务逻辑3"
  8.   } else if ("校验4".equals(type)) { 
  9.     return "执行业务逻辑4"
  10.   } else if ("校验5".equals(type)) { 
  11.     return "执行业务逻辑5"
  12.   } else if ("校验6".equals(type)) { 
  13.     return "执行业务逻辑6"
  14.   } else if ("校验7".equals(type)) { 
  15.     return "执行业务逻辑7"
  16.   } else if ("校验8".equals(type)) { 
  17.     return "执行业务逻辑8"
  18.   } else if ("校验9".equals(type)) { 
  19.     return "执行业务逻辑9"
  20.   } 
  21.   return "不在处理的逻辑中返回业务错误"

这么看,你要是还觉得挺清晰的话,想象下这些 return 里是各种复杂的业务逻辑方法~~

当然,策略模式的作用可不止是避免冗长的 if-else 或者 switch 分支,它还可以像模板方法模式那样提供框架的扩展点等。

网上的示例很多,比如不同路线的规划、不同支付方式的选择 都是典型的 if-else 问题,也都是典型的策略模式问题,栗子我们待会看,先看下策略模式的类图,然后去改造多重判断~

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章