解释器模式

  • 解释器模式Interpreter Pattern提供了评估语言的语法或表达式的方式,它属于行为型模式,这种模式实现了一个表达式接口,该接口解释一个特定的上下文,解释器模式通常被用在SQL解析、符号处理引擎等。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function Context() {
var sum = 0;
var list = [];
this.getSum = function() {
return sum;
}
this.setSum = function(_sum) {
sum = _sum;
}
this.add = function(eps) {
list.push(eps);
}
this.getList = function() {
return list;
}
}

function PlusExpression() {
this.interpret = function(context) {
var sum = context.getSum();
sum++;
context.setSum(sum);
}
}

function MinusExpression() {
this.interpret = function(context) {
var sum = context.getSum();
sum--;
context.setSum(sum);
}
}

(function() {
var context = new Context();
context.setSum(20);
//运行加法三次
context.add(new PlusExpression());
context.add(new PlusExpression());
context.add(new PlusExpression());
//运行减法两次
context.add(new MinusExpression());
context.add(new MinusExpression());
var list = context.getList();
for (var i = 0; i < list.length; i++) {
let expression = list[i];
expression.interpret(context);
}
console.log(context.getSum()); // 21
})();

参考链接