前言
在项目中,有的需求需要大量的业务判断,为了优化大量的 if-else / switch, 实现代码解耦、高内聚、易于维护与扩展(主要是增加策略)所以选择用策略+工厂(也涉及到单例)模型进行优化~
遵循开闭原则
涉及概念回顾:
1. 开闭原则(ocp): 即对于修改关闭,对于扩展开放;
2. 单一职责原则(srp): 类的变化只能是基于一个职责的变化;
3. 里氏替换原则(lsp): 基类可以出现的地方,子类一定可以出现。
面向接口,组合编程,简言之类或接口做属性,实现高内聚
- 用接口定义策略方法
- 不同具体实现采用编写类的方式
- 工厂方式获得具体策略对象
- 工厂中维护一个Map,用来解决策略类过多带来的选择问题
代码设计
做完后,出现了注入Bean为null的情况,定位问题后发现,如果引用自动注入的对象,那么当前类得加Spring扫描注解。并且加了扫描注解的类不要在其他地方以new的方式出现即可解决问题!
相关引用
链接: