解释器模式

来源:互联网 发布:淘宝购买数量增加设置 编辑:程序博客网 时间:2024/06/18 09:46

应用场景:

 解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。

譬如我们使用的正则表达式

/*  
 * 解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等 
 * */


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;
}
}

----------------------------------------------------------------------------------

/**
 * 解释器抽象类。 
 * @author Administrator
 *
 */
public abstract class AbstractExpression {  
    public abstract void interpret(Context context);   

----------------------------------------------------------------------------------

/**
 * 解释器具体实现类。 
*/  
public class MinusExpression extends AbstractExpression {  


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

----------------------------------------------------------------------------------

/*
 *    解释器具体实现类。  
* */  
public class PlusExpression extends AbstractExpression {  
     
   @Override  
   public void interpret(Context context) {  
       String in = context.getIn() ;   
       int v = Integer.parseInt( in ) ;  
       context.setOut( ++v ) ;   
   }  

---------------------------------------------------------------------------------

public class Test {


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


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


}

0 0
原创粉丝点击