- 浏览: 60958 次
- 性别:
- 来自: 青岛
文章分类
- 全部博客 (69)
- TWaver (1)
- jBPM (0)
- Struts2.0 (0)
- Hibernate (1)
- Spring (3)
- Swing (4)
- JPA (0)
- EJB (1)
- Birt (0)
- jxl (0)
- Seam (0)
- JSF (1)
- JSP (0)
- Servlet (0)
- JS (0)
- JBoss (0)
- SWT (3)
- Lucene (0)
- 设计模式 (22)
- 其他 (2)
- java (12)
- socket (1)
- android (1)
- ibatis (1)
- sqlite (1)
- junit (1)
- oracle (9)
- poi (1)
- php (1)
- bigbluebutton (1)
最新评论
-
u013246812:
访问不了啊,链接不存在!要么给个源码也行啊!
地方性网站 城阳部落 -
yhman:
原地复活。。。
php+mysql -
wo327808864:
...
socket传输自定义对象 -
锅巴49:
说得好,理解了。
状态模式 -
yhman:
哈哈。。。。
java的文件锁
Interpreter,解释器模式描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发
编译器中;在实际应用中,我们可能很少碰到去构造一个语言的文法的情况。
解释器模式的定义如下:定义语言的文法,并且建立一个解释器来解释该语言中的句子。
它属于类的行为模式。这里的语言意思是使用规定格式和语法的代码。
在GOF 的书中指出:如果一种特定类型的问题发生的频率足够高,那么可能就值得将
该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通
过解释这些句子来解决该问题。而且当文法简单、效率不是关键问题的时候效果最好——这
也就是解释器模式适用的环境。
让我们来看看神秘的解释器模式是由什么来组成的吧。
1) 抽象表达式角色:声明一个抽象的解释操作,这个接口为所有具体表达式角色(抽象语
法树中的节点)都要实现的。
什么叫做抽象语法树呢?《java 与模式》中给的解释为:抽象语法树的每一个节点都
代表一个语句,而在每个节点上都可以执行解释方法。这个解释方法的执行就代表这个
语句被解释。由于每一个语句都代表这个语句被解释。由于每一个语句都代表一个常见
的问题的实例,因此每一个节点上的解释操作都代表对一个问题实例的解答。
2) 终结符表达式角色:具体表达式。
a) 实现与文法中的终结符相关联的解释操作
b) 而且句子中的每个终结符需要该类的一个实例与之对应
3) 非终结符表达式角色:具体表达式。
a) 文法中的每条规则R::=R1R2…Rn 都需要一个非终结符表带式角色
b) 对于从R1 到Rn 的每个符号都维护一个抽象表达式角色的实例变量
c) 实现解释操作,解释一般要递归地调用表示从R1 到Rn 的那些对象的解释操作
4) 上下文(环境)角色:包含解释器之外的一些全局信息。
5) 客户角色:
a) 构建(或者被给定)表示该文法定义的语言中的一个特定的句子的抽象语法树
b) 调用解释操作
解释器是一个比较少用的模式,以下为其通用源码,可以做为参考。抽象表达式通常只有一个方法,
如下:
通常Client 是一个封装类,封装的结果就是传递进来一个规范语法文件,解析器分析后产生结果并返
回,避免了调用者与语法解析器的耦合关系。
编译器中;在实际应用中,我们可能很少碰到去构造一个语言的文法的情况。
解释器模式的定义如下:定义语言的文法,并且建立一个解释器来解释该语言中的句子。
它属于类的行为模式。这里的语言意思是使用规定格式和语法的代码。
在GOF 的书中指出:如果一种特定类型的问题发生的频率足够高,那么可能就值得将
该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通
过解释这些句子来解决该问题。而且当文法简单、效率不是关键问题的时候效果最好——这
也就是解释器模式适用的环境。
让我们来看看神秘的解释器模式是由什么来组成的吧。
1) 抽象表达式角色:声明一个抽象的解释操作,这个接口为所有具体表达式角色(抽象语
法树中的节点)都要实现的。
什么叫做抽象语法树呢?《java 与模式》中给的解释为:抽象语法树的每一个节点都
代表一个语句,而在每个节点上都可以执行解释方法。这个解释方法的执行就代表这个
语句被解释。由于每一个语句都代表这个语句被解释。由于每一个语句都代表一个常见
的问题的实例,因此每一个节点上的解释操作都代表对一个问题实例的解答。
2) 终结符表达式角色:具体表达式。
a) 实现与文法中的终结符相关联的解释操作
b) 而且句子中的每个终结符需要该类的一个实例与之对应
3) 非终结符表达式角色:具体表达式。
a) 文法中的每条规则R::=R1R2…Rn 都需要一个非终结符表带式角色
b) 对于从R1 到Rn 的每个符号都维护一个抽象表达式角色的实例变量
c) 实现解释操作,解释一般要递归地调用表示从R1 到Rn 的那些对象的解释操作
4) 上下文(环境)角色:包含解释器之外的一些全局信息。
5) 客户角色:
a) 构建(或者被给定)表示该文法定义的语言中的一个特定的句子的抽象语法树
b) 调用解释操作
解释器是一个比较少用的模式,以下为其通用源码,可以做为参考。抽象表达式通常只有一个方法,
如下:
public abstract class Expression { //每个表达式必须有一个解析任务 public abstract Object interpreter(Context ctx); } 抽象表达式是生成语法集合(也叫做语法树)的关键,每个语法集合完成指定语法解析任务,它是通 过迭代调用的方式,最终由最小的语法单元进行解析完成。终结符表达式如下: public class TerminalExpression extends Expression { //通常终结符表达式只有一个,但是有多个对象 public Object interpreter(Context ctx) { 您的设计模式 第 295 页 return null; } } 通常终结符表达式比较简单,主要是处理场景元素和数据的转换。非终结表达式如下:
public class NonterminalExpression extends Expression {
//每个非终结符表达式都会对其他表达式产生依赖
public NonterminalExpression(Expression... expression){
}
public Object interpreter(Context ctx) {
//进行文法处理
return null;
}
}
每个非终结符表达式都代表了一个文法规则,并且每个文法规则都只关心自己周边的文法规则的结果,
注意是结果,因此这就产生了每个非终结符调用自己周边的非终结符,然后最终最小的文法规则就是终结
符表达式,终结符表达式的概念就是如此,不能够再参与比自己更小的文法运算了。我们再来看Client 类:
public class Client {
public static void main(String[] args) {
Context ctx = new Context();
//通常定一个语法容器,容纳一个具体的表达式,通常为ListArray,LinkedList,Stack等类
型
Stack<Expression> stack = null;
for(;;){
//进行语法判断,并产生递归调用
}
//产生一个完整的语法树,由各各个具体的语法分析进行解析
Expression exp = stack.pop();
//具体元素进入场景
exp.interpreter(ctx);
}
}
通常Client 是一个封装类,封装的结果就是传递进来一个规范语法文件,解析器分析后产生结果并返
回,避免了调用者与语法解析器的耦合关系。
发表评论
-
亨元模式
2010-05-14 13:18 999flyweight模式的出现是因为面向对象开发有时在设计和性能 ... -
备忘录模式
2010-05-14 11:49 794memento是一个保存另外一个对象内部状态拷贝的对象.这样以 ... -
中介者模式
2010-05-14 11:07 736Mediator Pattern 用一个调停对象来封装一系列的 ... -
原型模式
2010-05-13 19:24 723原型模式(Prototype): 用原型实例指定创建对象的种类 ... -
状态模式
2010-05-13 17:20 812State的定义: 不同的状态,不同的行为;或者说,每个状态有 ... -
访问者模式
2010-05-13 15:15 586表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
责任链模式
2010-05-13 13:50 694Chain of Responsibility(CoR) ... -
观察者模式
2010-05-13 01:22 728观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听 ... -
组合模式
2010-05-12 22:58 619组合模式(Composite Pattern)有时候又叫做部分 ... -
迭代器模式
2010-05-12 19:41 713提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对 ... -
装饰模式
2010-05-12 19:29 612Decorator pattern 装饰模式是用于对象的创建, ... -
命令模式
2010-05-12 18:02 647命令模式: 将请求封闭成对象,这可以让你使用不同的请求,队列. ... -
桥梁模式
2010-05-12 01:01 389桥梁(Bridge)模式 桥梁模式是一个非常有用的模式,也 ... -
建造者模式
2010-05-11 23:27 656Builder模式也叫建造者模式或者生成器模式,是由GoF提出 ... -
模板模式
2010-05-11 22:19 667模板方法(Template Method)模式属于行为模式,定 ... -
适配器模式
2010-05-11 16:58 579将一个类的接口转换成客户希望的另外一个接口。Adapter模式 ... -
门面模式
2010-05-11 14:39 1252Facade外观模式: 为子系统中的一组接口提供一个统一接口 ... -
工厂模式
2010-05-11 10:55 654通常来讲,工厂模式分为:简单工厂模式,工厂方法模式和抽象工厂模 ... -
单例模式
2010-05-10 23:53 672主类: public class TheKing { p ... -
代理模式
2010-05-10 18:22 762定义 代理模式( ...
相关推荐
解释器模式是一种行为设计模式,它允许我们定义一个语言的语法,并提供一个解释器来解析该语言中的句子。在Java中实现解释器模式,我们可以创建一个抽象表达式接口,然后为每种特定的语法结构创建一个具体表达式类。...
解释器模式是一种设计模式,它允许我们为特定的语言或表达式定义一个解析规则,并通过这个规则来解释执行这些语言或表达式。在本例子中,我们将深入探讨如何使用解释器模式来实现一个能够理解并执行机器人指令的系统...
**设计模式之解释器模式(Interpreter Pattern)** 解释器模式是一种行为设计模式,它提供了一种方式来表示语言的语法,并实现一个解释器用于解析这种语法的语句。这种模式通常用于小型、特定领域的语言(DSL)实现,...
**解释器模式(Interpreter)**是一种行为设计模式,它允许我们定义一种语言并为其创建一个解释器。在软件工程中,这种模式常用于处理简单的语言或表达式,例如配置文件、计算公式或者简单的脚本语言。通过使用解释...
解释器模式是一种设计模式,它允许我们为特定的语言或表达式定义一个解析规则,并提供一个解释器来执行这些规则。这种模式在处理简单的语言或结构化表达式时特别有用,例如配置文件、简单的数学表达式或者编程语言的...
解释器模式(Interpreter Pattern)是25种经典设计模式之一,主要应用于创建一个解析语言或者表达式的方式。在本篇文章中,我们将深入探讨解释器模式的概念、结构以及其在实际开发中的应用。 解释器模式是一种行为...
**行为型模式——解释器模式** 解释器模式是一种设计模式,它允许我们为特定语言创建一个解析器。这种模式在处理简单的语言或表达式时特别有用,例如配置文件、简单的编程语言或者数学表达式。解释器模式的核心在于...
解释器模式是一种设计模式,它允许我们为特定的语言或表达式定义一个解析规则。在软件工程中,这种模式常用于构建简单的语言解释器或者执行基于某种规则的逻辑。本讲将深入探讨解释器模式的原理、结构以及在实际开发...
**解释器模式**是一种行为设计模式,它提供了一种方式来表示语言的语法,并通过类和对象解析这种语法。在编程领域,解释器模式常用于创建简单的语言或表达式解析器,例如配置文件、计算器应用或者SQL查询的简化版本...
解释器模式是一种设计模式,用于创建能解析特定语言或规则集的解释器。这种模式的核心在于定义一个表达式的抽象语法树(AST),并提供一个解释器来遍历这棵树,执行与之相关的操作。在 GoF 的《设计模式》书中,解释...
《C语言解释器的实现与解释器模式解析》 在编程世界中,编译器和解释器是两种关键的工具,它们将高级编程语言转换为机器可以理解的指令。本篇我们将聚焦于“C语言解释器”的实现,以及在设计过程中所采用的“解释器...
如果在系统中某一特定类型的问题发生的频率很高,此时可以考虑将这些问题的实例表述为一个语言中的句子,因此可以构建一...解释器模式描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发的编译器中。
Android解释器模式简单Demo,通过实现计算器四则运算,加减的逻辑,来领悟解释器这种模式的设计,同步博文:http://blog.csdn.net/qq_28690547/article/details/50707916
c++设计模式-行为型模式-解释器模式;qt工程;c++简单源码; 解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式...
解释器模式,也被称为解析器模式,是一种设计模式,它允许我们定义一套语言的文法,并为这个语言提供解释器。这种模式常用于构建小型、特定领域的语言,比如配置文件、简单的脚本或计算器等。在Java、Python等面向...
解释器模式(Interpreter Pattern)是一种行为型设计模式,它用于定义一个语言的文法,并解析语言中的表达式。具体来说,解释器模式通过定义一个解释器来解释语言中的表达式,从而实现对语言的解析和执行。 在解释...
该应用程序使用Java中的解释器模式来解析和评估算术表达式,如“5 + 3 * 2”。在这里,解释器将表达式的每个部分转换为表示数字和操作的对象。这些对象遵循定义的语法,使应用程序能够根据算术规则正确理解和计算...