1 介绍
if-else,这里所说的if-else
并不是说任何简单的判断都引入策略模式来优化,这样反而会增加代码的复杂度。
boolean类型的变量进行优化
2 背景
if-else来判断申请单的类型,并对不同的申请单做不同的处理。
if-else分支也变得臃肿,而且每次新增申请单的时候,都需要在后面再加一个分支,不仅破坏了开闭原则,而且可读性极差,也不利于扩展。
3 引入策略接口
doDetail(即可
4 引入策略上下文对象
applycationContext 来获取策略接口的所有实现类,在策略上下文对象完成初始化后,将实现类注册到 map
中。(@PostConstruct:在bean初始化完成后处理一些逻辑)
5 客户端调用
6 总结
关于策略上下文对象使用集合存储所有策略的解释:使用 Map
来存储,需要一个key来标识使用哪种策略来处理。