龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

基于Java的解释器设计模式[图](2)

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
对每一个角色都给出了详细的职责,而且在类图中给出五个角色之间的关系。这样实现起来也不是很困难了,下面举了一个简单的例子,希望能加深你对解

  对每一个角色都给出了详细的职责,而且在类图中给出五个角色之间的关系。这样实现起来也不是很困难了,下面举了一个简单的例子,希望能加深你对解释器模式的理解。

   三、举例

  来举一个加减乘除的例子吧,实现思路来自于《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);
  }
  }

精彩图集

赞助商链接