模式介绍
一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
示例
1 | go复制代码if (type == "A") { |
解决有多个if...else
等条件分支的情况
定义策略
1 | arduino复制代码public interface BaseStrategy { |
1 | csharp复制代码public interface IStrategy extends BaseStrategy { |
添加策略
A
1 | typescript复制代码import com.design.pattern.strategy.IStrategy; |
B
1 | typescript复制代码import com.design.pattern.strategy.IStrategy; |
其他
1 | typescript复制代码import com.design.pattern.strategy.IStrategy; |
将策略加载至工厂
使用ApplicationContextAware
接口,把所有的策略,初始化到iStrategyMap
里面。然后对外提供getStrategy
方法。
1 | java复制代码@Component |
优缺点
优点
- 避免使用多重条件判断
- 扩展性良好。
- 算法可以自由切换
缺点
- 策略类会增多。
- 所有策略类都需要对外暴露。
本文转载自: 掘金