微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JAVA设计模式之解释器模式详解

这篇文章主要介绍了JAVA设计模式之解释器模式详解,解释器模式是类的行为模式,给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器,需要的朋友可以参考下

在阎宏博士的《JAVA与模式》一书中开头是这样描述解释器(Interpreter)模式的:

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

解释器模式的结构

下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示:

模式所涉及的角色如下所示:

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

(2)终结符表达式(Terminal Expression)角色:实现了抽象表达式角色所要求的接口,主要是一个interpret()方法;文法中的每一个终结符都有一个具体终结表达式与之相对应。比如有一个简单的公式R=R1+R2,在里面R1和R2就是终结符,对应的解析R1和R2的解释器就是终结符表达式。

(3)非终结符表达式(Nonterminal Expression)角色:文法中的每一条规则都需要一个具体的非终结符表达式,非终结符表达式一般是文法中的运算符或者其他关键字,比如公式R=R1+R2中,“+"就是非终结符,解析“+”的解释器就是一个非终结符表达式。

(4)环境(Context)角色:这个角色的任务一般是用来存放文法中各个终结符所对应的具体值,比如R=R1+R2,我们给R1赋值100,给R2赋值200。这些信息需要存放到环境角色中,很多情况下我们使用Map来充当环境角色就足够了。

为了说明解释器模式的实现办法,这里给出一个最简单的文法和对应的解释器模式的实现,这就是模拟Java语言中对布尔表达式进行操作和求值。

在这个语言中终结符是布尔变量,也就是常量true和false。非终结符表达式包含运算符and,or和not等布尔表达式。这个简单的文法如下:

复制代码 代码如下:

Expression  ::= Constant | Variable | Or | And | NotAnd ::= Expression 'AND' Expression

Or::= Expression 'OR' Expression

Not ::= 'NOT' Expression

Variable::= 任何标识符

Constant    ::= 'true' | 'false'

上一篇:Spring实现文件上传功能下一篇:Spring bean为什么认是单例 热门搜索

解释器模式 

模式设计 

设计模式 

模版设计模式 

溶解模式 

相关文章

JAVA设计模式之解释器模式详解

2021-10-19阅读(9112)评论(0)推荐()

这篇文章主要介绍了JAVA设计模式之解释器模式详解,解释器模式是类的行为模式,给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器,需要...

Java设计模式之java解释器模式详解

2021-09-28阅读(4487)评论(0)推荐()

这篇文章主要介绍了Java设计模式之解释器模式定义与用法,结合具体实例形式详细分析了Java解释器模式的概念、原理、定义及相关操作技巧,需要的朋友可以参考下

Java设计模式编程之解释器模式的简单讲解

2021-10-06阅读(9687)评论(0)推荐()

这篇文章主要介绍了Java设计模式编程之解释器模式的讲解,解释器设计模式要注意其引发的性能问题,需要的朋友可以参考下

Java设计模式之解释器模式(Interpreter模式)介绍

2021-10-19阅读(6821)评论(0)推荐()

这篇文章主要介绍了Java设计模式之解释器模式(Interpreter模式)介绍,Interpreter定义:定义语言的文法,并且建立一个解释器来解释该语言中的...

C++设计模式之解释器模式

2021-10-06阅读(7862)评论(0)推荐()

这篇文章主要介绍了C++设计模式之解释器模式,本文讲解了什么是解释器模式、文法规则和抽象语法树、解释器模式的使用场合等内容,需要的朋友可以参考下

Android编程设计模式之解释器模式详解

2021-10-05阅读(9577)评论(0)推荐()

这篇文章主要介绍了Android编程设计模式之解释器模式,详细分析了Android解释器模式的概念、原理、使用场景、使用方法及相关操作注意事项,需要的朋友可以参...

23种设计模式(15)java解释器模式

2021-10-07阅读(9396)评论(0)推荐()

这篇文章主要为大家详细介绍了23种设计模式之java解释器模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

取消

有人回复邮件通知

提交评论

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐