设计模式-23.解释器模式

211 阅读1分钟

一句话总结

给定一个语言,定义它文本的一种表示,并定义一个解释器,解释器使用该表示解释语言中的句子。

实例代码

static func main() {
    let context = Context()
    var array: [AbstractExpression] = []
    array.append(TerminalExpression())
    array.append(NonterminalExpression())
    array.append(TerminalExpression())
    array.append(TerminalExpression())

    for item in array {
        item.interpret(context: context)
    }
}

protocol AbstractExpression {
    func interpret(context: Context)
}

class TerminalExpression: AbstractExpression {
    func interpret(context: Context) {
        print("终端解释器")
    }
}

class NonterminalExpression: AbstractExpression {
    func interpret(context: Context) {
        print("非终端解释器")
    }
}

class Context {
    var input = ""
    var output = ""
}

应用场景

当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。

  • 乐谱播放
  • 语音控制机器人行动