定义
策略模式(Strategy Design Pattern):封装可以互换的行为,并使用委托来决定要使用哪一个。
策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。
用人话翻译后就是:运行时我给你这个类的方法传不同的 “key”,你这个方法就去执行不同的业务逻辑。
你品,你细品,这不就是 if else 干的事吗?
先直观的看下传统的多重 if else 代码
- public String getCheckResult(String type) {
- if ("校验1".equals(type)) {
- return "执行业务逻辑1";
- } else if ("校验2".equals(type)) {
- return "执行业务逻辑2";
- } else if ("校验3".equals(type)) {
- return "执行业务逻辑3";
- } else if ("校验4".equals(type)) {
- return "执行业务逻辑4";
- } else if ("校验5".equals(type)) {
- return "执行业务逻辑5";
- } else if ("校验6".equals(type)) {
- return "执行业务逻辑6";
- } else if ("校验7".equals(type)) {
- return "执行业务逻辑7";
- } else if ("校验8".equals(type)) {
- return "执行业务逻辑8";
- } else if ("校验9".equals(type)) {
- return "执行业务逻辑9";
- }
- return "不在处理的逻辑中返回业务错误";
- }
这么看,你要是还觉得挺清晰的话,想象下这些 return 里是各种复杂的业务逻辑方法~~
当然,策略模式的作用可不止是避免冗长的 if-else 或者 switch 分支,它还可以像模板方法模式那样提供框架的扩展点等。
网上的示例很多,比如不同路线的规划、不同支付方式的选择 都是典型的 if-else 问题,也都是典型的策略模式问题,栗子我们待会看,先看下策略模式的类图,然后去改造多重判断~