解释器模式
定义
解释器模式(Interpreter Pattern),提供了评估语言的语法或表达式的方式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
实现
js
class Context {
constructor() {
this._list = [] // 存放 终结符表达式
this._sum = 0 // 存放 非终结符表达式(运算结果)
}
get sum() {
return this._sum
}
set sum(newValue) {
this._sum = newValue
}
add(expression) {
this._list.push(expression)
}
get list() {
return [...this._list]
}
}
class PlusExpression {
interpret(context) {
if (!(context instanceof Context)) {
throw new Error('TypeError')
}
context.sum = ++context.sum
}
}
class MinusExpression {
interpret(context) {
if (!(context instanceof Context)) {
throw new Error('TypeError')
}
context.sum = --context.sum
}
}
const context = new Context()
// 依次添加: 加法 | 加法 | 减法 表达式
context.add(new PlusExpression())
context.add(new PlusExpression())
context.add(new MinusExpression())
// 依次执行: 加法 | 加法 | 减法 表达式
context.list.forEach(expression => expression.interpret(context))
console.log(context.sum)