首页 > 程序开发 > 软件开发 > Java >

JAVA设计模式十五--Interpreter(解释器模式)

2012-06-27

Interpreter模式,即解释器模式。  解释器模式属于行为模式,Gof是这样定义的:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解 释语言中的句子。  解释器模式需要解决...

Interpreter模式,即解释器模式。
  解释器模式属于行为模式,Gof是这样定义的:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解
释语言中的句子。
  解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子]
。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。
  实例应用:正则表达式

举例说明:
[java]
package design.interpreter;

/**
* 文件名称:Context.java
* 创建人:Fei Wong
* 创建时间: Jun 25, 2012
* 电子邮箱:www.2cto.com
* 解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等
* */

public class Context {
private String in ;

private int out ;

public Context(String in) {
this.in = in ;
}

public int getOut() {
return out;
}

public void setOut(int out) {
this.in = String.valueOf( out ) ;
this.out = out;
}

public String getIn() {
return in;
}


}




package design.interpreter;

/**
* 文件名称:AbstractExpression.java
* 创建人:Fei Wong
* 创建时间: Jun 25, 2012
* 电子邮箱:www.2cto.com
* 解释器抽象类。
* */

public abstract class AbstractExpression {
public abstract void interpret(Context context);
}




package design.interpreter;

/**
* 文件名称:MinusExpression.java 创建人:Fei Wong 创建时间: Jun 25, 2012
* 电子邮箱:www.2cto.com
* 解释器具体实现类。
*/

public class MinusExpression extends AbstractExpression {

@Override
public void interpret(Context context) {
String in = context.getIn();
int v = Integer.parseInt(in);
context.setOut(--v);
}

}




package design.interpreter;

/**
* 文件名称:PlusExpression.java
* 创建人:Fei Wong
* 创建时间: Jun 25, 2012
* 电子邮箱:www.2cto.com
* 解释器具体实现类。
* */

public class PlusExpression extends AbstractExpression {

@Override
public void interpret(Context context) {
String in = context.getIn() ;
int v = Integer.parseInt( in ) ;
context.setOut( ++v ) ;
}

}




package design.interpreter;

/**
* 文件名称:Client.java
* 创建人:Fei Wong
* 创建时间: Jun 25, 2012
* 电子邮箱:www.2cto.com
* */

public class Client {

/**
* @param args
*/
public static void main(String[] args) {
Context context = new Context( "10" ) ;

new MinusExpression().interpret(context) ;
new PlusExpression().interpret(context) ;
new MinusExpression().interpret(context) ;
new PlusExpression().interpret(context) ;
System.out.println( context.getOut() );
}

}
作者:hfmbook

相关文章
最新文章
热点推荐