基于Java的解释器设计模式,基于Java的解释器设计模式
【 tulaoshi.com - Java 】
一、引子
  对每一个角色都给出了详细的职责,而且在类图中给出五个角色之间的关系。这样实现起来也不是很困难了,下面举了一个简单的例子,希望能加深你对解释器模式的理解。 
   三、举例 
  来举一个加减乘除的例子吧,实现思路来自于《java与模式》中的例子。每个角色的功能按照上面提到的规范来实现。 
  //上下文(环境)角色,使用HashMap来存储变量对应的数值 
  class Context 
  { 
  private Map valueMap = new HashMap(); 
  public void addValue(Variable x , int y) 
  { 
  Integer yi = new Integer(y); 
  valueMap.put(x , yi); 
  } 
  public int LookupValue(Variable x) 
  { 
  int i = ((Integer)valueMap.get(x)).intValue(); 
  return i ; 
  } 
  } 
  //抽象表达式角色,也可以用接口来实现 
  abstract class Expression 
  { 
  public abstract int interpret(Context con); 
  } 
  //终结符表达式角色 
  class Constant extends Expression 
  { 
  private int i ; 
  public Constant(int i) 
  { 
  this.i = i; 
  } 
  public int interpret(Context con) 
  { 
  return i ; 
  } 
  } 
  class Variable extends Expression 
  { 
  public int interpret(Context con) 
  { 
  //this为调用interpret方法的Variable对象 
  return con.LookupValue(this); 
  } 
  } 
  //非终结符表达式角色 
  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 , Expres
                        
来源:http://www.tulaoshi.com/n/20160129/1488271.html
看过《基于Java的解释器设计模式》的人还看了以下文章 更多>>