解释器模式

 

设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。

 1 package designPattern;
 2 import java.util.ArrayList;
 3 import java.util.List;
 4 /**
 5  * 解释器模式
 6  * @author Administrator
 7  */
 8 public class B15_InterpreterTest {
 9     /**
10      *  给定一个语言,定义它的文法的一种表示,并定义一个解释器,
11      *  这个解释器使用该表示来解释语言中的句子。
12      */
13     @SuppressWarnings("unchecked")
14     public static void main(String[] args) {
15         Context ctx = new Context();
16         ctx.add(new SimpleExpression());
17         ctx.add(new AdvanceExpression());
18         ctx.add(new SimpleExpression());
19         List<Expression> eList=ctx.getList();
20         for (Expression eps : eList) {
21             eps.interpret(ctx);
22         }
23     }
24 }
25 abstract class Expression {
26 
27     abstract void interpret(Context ctx);
28 }
29 //expression 声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。
30 class AdvanceExpression extends Expression {
31 
32     void interpret(Context ctx) {
33         System.out.println("这是高级解析器!");
34     }
35 }
36 class SimpleExpression extends Expression {
37 
38     void interpret(Context ctx) {
39         System.out.println("这是普通解析器!");
40     }
41 }
42 //context 包含解释器之外的一些全局信息。
43 class Context {
44 
45     private String content;
46     
47     @SuppressWarnings("rawtypes")
48     private List list = new ArrayList();
49     
50     public void setContent(String content) {
51         this.content = content;
52     }
53     
54     public String getContent() {
55         return this.content;
56     }
57     
58     @SuppressWarnings("unchecked")
59     public void add(Expression eps) {
60         list.add(eps);
61     }
62     
63     @SuppressWarnings("rawtypes")
64     public List getList() {
65         return list;
66     }
67 }

 

环境:JDK1.6,MAVEN,tomcat,eclipse

源码地址:https://files.cnblogs.com/files/xiluhua/designPattern.rar

欢迎亲们评论指教。

posted @ 2015-04-10 10:11  xiluhua  阅读(172)  评论(0编辑  收藏  举报