A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© lingdu 中级黑马   /  2015-5-13 23:02  /  295 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Interpreter模式,即解释器模式。
  解释器模式属于行为模式,Gof是这样定义的:给定一个语言,定

义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来


    释语言中的句子。
  解释器模式需要解决的是,如果一种特定类型的问题发生的频率足

够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句

子]
。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问

题。
  实例应用:正则表达式

举例说明:
[java]
package design.interpreter;



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;


public abstract class AbstractExpression {
    public abstract void interpret(Context context);  
}




package design.interpreter;



public class MinusExpression extends AbstractExpression {

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

}




package design.interpreter;


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 Client {

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

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马