• [译]Java设计模式之解释器


    (文章翻译自Java Design Pattern: Interpreter)

    解释器模式适用于当一些内容需要翻译的时候。下面的例子是一个非常简单的解释器实现。它将字母"a"和"b"翻译成"1"和"2"。

    类图:

    interpreter-pattern-class-diagram

    注意:为了使结构更加清晰依赖关系也在图中显示出来了。

    Java 代码

    class Context { 
     
        private String input; 
        private String output; 
     
        public Context(String input) { 
            this.input = input; 
            this.output = "";
        } 
     
        public String getInput() { 
            return input; 
        } 
        public void setInput(String input) { 
            this.input = input; 
        } 
        public String getOutput() { 
            return output; 
        } 
        public void setOutput(String output) { 
            this.output = output; 
        } 
    }
     
    abstract class Expression {    
        public abstract void interpret(Context context); 
    }
     
    class AExpression extends Expression { 
        public void interpret(Context context) { 
            System.out.println("a expression"); 
            String input = context.getInput(); 
     
            context.setInput(input.substring(1)); 
            context.setOutput(context.getOutput()+ "1"); 
        } 
     
    }
     
    class BExpression extends Expression { 
        public void interpret(Context context) { 
            System.out.println("b expression"); 
            String input = context.getInput(); 
     
            context.setInput(input.substring(1)); 
            context.setOutput(context.getOutput()+ "2"); 
        } 
    }
     
    public class TestInterpreter {
    	 public static void main(String[] args) { 
    	        String str = "ab"; 
    	        Context context = new Context(str); 
     
    	        List<Expression> list = new ArrayList<Expression>(); 
    	        list.add(new AExpression()); 
    	        list.add(new BExpression()); 
     
    	        for(Expression ex : list) { 
    	            ex.interpret(context); 
     
    	        } 
     
    	        System.out.println(context.getOutput()); 
    	    } 
    }
    

    在JDK中使用解释器模式:

    java.util.Pattern

  • 相关阅读:
    第八周编程总结
    第五周课程总结&试验报告(三)
    第四周课程总结&试验报告(二)
    第三周课程总结&实验报告一
    2019春总结作业
    第一次随笔
    我人生中影响最大的三位老师
    第十二周作业
    第十一周编程总结
    第十周作业
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/4214358.html
Copyright © 2020-2023  润新知