解释器模式

public class InterpreterPattern {

    public interface InterpreterImpl{
        public void interprete(Context context);
    }
    public class Context{
        private int params;
        private int results;
        public int getParams() {
            return params;
        }
        public void setParams(int params) {
            this.params = params;
        }
        public int getResults() {
            return results;
        }
        public void setResults(int results) {
            this.results = results;
        }
        public Context(int params) {
            super();
            this.params = params;
        }
        
    }
    public class InterpreterMinus  implements InterpreterImpl{
        public void interprete(Context context){
            context.setResults(context.getParams()-1);
        }
    }
    public class InterpreterPlus  implements InterpreterImpl{
        public void interprete(Context context){
            context.setResults(context.getParams()+1);
        }
    }
    public void test(){
        Context context = new Context(10);
        InterpreterMinus minus = new InterpreterMinus();
        InterpreterPlus plus = new InterpreterPlus();
        minus.interprete(context);
        System.out.println(context.getResults());
        plus.interprete(context);
        System.out.println(context.getResults());
    }
    
    public static void main(String[] args) {
        new InterpreterPattern().test();
    }
}

输出结果:

9
11

经过-1解释器解释一下结果就是9了

经过+1解释器解释一下结果就是 11了

其实这个和策略模式正好是反过来了,策略模式是将不同的策略传递到Context中,而解释器模式就是将不同的解释器拿来解释Context;

 最好用于处理文法或者进行编译,或者用于处理上下文关系的应用,应用得很少。

posted @ 2015-10-06 20:33  √珞珈搬砖工√  阅读(77)  评论(0)    收藏  举报