解释器模式的定义如下:定义语言的文法,并且建立一个解释器来解释该语言中的句子。它属于类的行为模式。这里的语言意思是使用规定格式和语法的代码。 
						作者:中国IT实验室 来源:中国IT实验室 2007年8月26日
关键字:
 
						
						
						
						
							 //非终结符表达式角色
  
  class Add extends Expression
  {
  private Expression left ,right ;
  public Add(Expression left , Expression right)
  {
  this.left = left ;
  this.right= right ;
  }
  
  public int interpret(Context con)
  {
  return left.interpret(con) + right.interpret(con);
  }
  }
  
  class Subtract extends Expression
  {
  private Expression left , right ;
  public Subtract(Expression left , Expression right)
  {
  this.left = left ;
  this.right= right ;
  }
  
  public int interpret(Context con)
  {
  return left.interpret(con) - right.interpret(con);
  }
  
  }
  
  class Multiply extends Expression
  {
  private Expression left , right ;
  public Multiply(Expression left , Expression right)
  {
  this.left = left ;
  this.right= right ;
  }
  public int interpret(Context con)
  {
  return left.interpret(con) * right.interpret(con);
  }
  }
  
  class Division extends Expression
  {
  private Expression left , right ;
  public Division(Expression left , Expression right)
  {
  this.left = left ;
  this.right= right ;
  }
  
  public int interpret(Context con)
  {
  try{
  return left.interpret(con) / right.interpret(con);
  }catch(ArithmeticException ae)
  {
  System.out.println("被除数为0!");
  return -11111;
  }
  }
  }
  
  //测试程序,计算 (a*b)/(a-b+2)
  
  public class Test
  {
  private static Expression ex ;
  private static Context con ;
  public static void main(String[] args)
  {
  con = new Context();
  //设置变量、常量
  Variable a = new Variable();
  Variable b = new Variable();
  Constant c = new Constant(2);
  //为变量赋值
  con.addValue(a , 5);
  con.addValue(b , 7);
  //运算,对句子的结构由我们自己来分析,构造
  ex = new Division(new Multiply(a , b), new Add(new Subtract(a , b) , c));
  System.out.println("运算结果为:"+ex.interpret(con));
  }
  }