软件设计模式是高效组织代码的方式,它能保证系统的灵活性和可靠性.策略模式是最长用的模式之一.

定义一系列的算法,把它们封装起来.并且使它们可以互相替换. - 策略模式

实现方式

策略模式一般有两个部分组成:

​ 第一部:一组封装着可以互相替换的算法的策略组

​ 第二部:环境类Context,接受客户的请求,随后将请求委托给某个策略组执行.

在静态语言中,要实现策略组可替换,这些策略组必须实现相同的接口.在JavaScript中方法本身只可以随意替换的.所以策略组在JavaScript中可以充分发挥它的特点.

例子

计算分数:基础分数*等级数.等级分为A、B、C对应的值分别是:2、3、4.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 策略组 start
interface IFn {
(score: number):number;
};
let A:IFn;
A = function (score:number):number {
return score*2
};
let B:IFn;
B = function (score:number):number {
return score*3
};
let C:IFn;
C = function (score:number):number {
return score*4
};
// 策略组 end

// Context
function calcScore (scoreFn: Ifn, score: number) {
scoreFn(score);
}

calcScore(B,911);

使用场景

当你的一个方法里面有很多if-else 判断语句做不同情景的处理时,这时你就可以考虑使用策略模式进行代码分离封装了.

前端最常用的场景是:

  1. 表单值的合法性校验.
  2. 界面不同状态,处理方式不同.