场景
- 某个市场人员接到单后的报价策略(CRM系统中常见问题)。报价策略很复杂,可以简单作如下分类:
- 普通客户小批量报价
- 普通客户大批量报价
- 老客户小批量报价
- 老客户大批量报价
- 具体选用哪个报价策略,这需要根据实际情况来确定。这时候,我们采用策略模式即可。
普通代码实现
缺点:如果类型特别多,算法比较复杂时,整个条件控制代码会变得很长,难于维护
策略模式
- 策略模式对应于解决某个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或者增加新的算法。并且由客户端解决调用哪个算法。
代码解析
通过策略模式实现以上场景
接口
1 | public interface Strategy { |
具体算法包
1 | /** |
上下文类
1 | /** |
调用
1 | /** |
本质
- 分离算法,选择实现
开发中常见的场景
- JAVASE中GUI编程中,布局管理
- Spring框架中,Resource接口,资源访问策略
- javax.servlet.http.HttpServlet#service()
注:该博文为学习总结,视频来源为高淇java300集