定义
策略(Strategy)模式
定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。
策略(Strategy)模式
最核心的一点就是,每个算法的结构是一样的,体现在 js
中,可能就是入参和返回值一样,这样才能保证可以相互替换。
结构:
- 对
ts
而言,抽象的算法
类,定义好每个算法的结构;对于js
而言,就是一个顶级类
,所有具体的算法类都是继承这个顶级类
; - 具体的
算法类
; - 环境(Context)类:用于切换策略和使用策略的类。
实现
// 1. 抽象出整个算法的结构
abstract class Strategy {
abstract strategyMethod(a: number, b: number): number
}
// 2. 声明具体的算法
class AddStrategy extends Strategy {
strategyMethod(a: number, b: number): number {
return a + b;
}
}
cl