Java与模式笔记(27)

来源:互联网 发布:nginx视频防盗链 编辑:程序博客网 时间:2024/06/05 23:44

解释器(Interpreter)模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。

解析模式结构与角色

 

抽象表达式(Expression)角色:声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要是interpret()方法,称做解释操作。

终结符表达式(Terminal Expression)角色:这是一个具体角色。实现了抽象表达式角色所要求的接口,主要是一个interpret()方法;文法中的每一个终结符都有一个具体终结表达式与之相对应。

非终结符表达式(Nonterminal Expression)角色:这是一个具体角色。文法中的每一条规则R=R1R2…Rn都需要一个具体的非终结符表达式类;对每一个R1R2…Rn中的符号都持有一个静态类型Expression的实力变量;实现解释操作,即interpret()方法。解释操作以递归方式调用上面所提到的代表R1R2…Rn中的各个符号的实例变量。

客户端(Client)角色:代表模式的客户端有以下功能:建造一个抽象语法树(AST或者Abstract Syntax Tree);调用解释操作interpret()

一般情况下,模式还需要环境(Context)角色:提供解释器之外的一些全局信息,比如变量的真实量值等。

解释其模式适用于以下的情况

1、  系统有一个简单的语言可供解释。

2、  一些重复发生的问题可以用这种简单的语言表达。

效率不是主要的考虑。