JAVA设计模式十五--Interpreter(解释器模式)Interpreter模式,即解释器模式。 解释器模式属于行为模式,Gof是这样定义的:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解 释语言中的句子。 解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子]。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。
实例应用:正则表达式
举例说明:
package design.interpreter;/** * 文件名称:Context.java * 创建人:Fei Wong * 创建时间: Jun 25, 2012 * 电子邮箱:feiwong8@126.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 * 电子邮箱:feiwong8@126.com * 解释器抽象类。 * */public abstract class AbstractExpression {public abstract void interpret(Context context); }package design.interpreter;/** * 文件名称:MinusExpression.java 创建人:Fei Wong 创建时间: Jun 25, 2012 * 电子邮箱:feiwong8@126.com * 解释器具体实现类。 */public class MinusExpression extends AbstractExpression {@Overridepublic 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 * 电子邮箱:feiwong8@126.com * 解释器具体实现类。 * */public class PlusExpression extends AbstractExpression {@Overridepublic 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 * 电子邮箱:feiwong8@126.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() ); }}