一、应用场景
- 适合if…else类型的场景;
- 为框架提供扩展点
二、存在的问题
存在问题: 如果不使用策略模式,修改if…else逻辑,违背了开闭原则; 耦合性比较严重。
解决问题: 提高了扩展性;符合开闭原则
三、实现方案
- 若策略是无状态的:
- 使用查表法Map + 简单工厂模式
- 使用SpringBoot的@Componet功能
- 使用枚举 + 抽象方法的方案
- 使用Lambda + Fuction的方案
- 策略是有状态的:
- 简单工厂模式 + if…else直接new A();
- 查表法Map + 简单工厂模式,Map中存储的是Class对象
四、思考
- 简单逻辑或未来没有变化的场景,直接使用if.else即可
- 复杂逻辑或未来变化的场景,使用策略模式来优化