zoukankan      html  css  js  c++  java
  • 解释器模式

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

     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

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

    欢迎亲们评论指教。

  • 相关阅读:
    SCAU 9504 面试
    SCAU 9503 懒人选座位
    SCAU 8628 相亲
    SCAU 10691 ACM 光环
    SCAU 8626 原子量计数
    SCAU 10674 等差对
    HDU ACM 1048 The Hardest Problem Ever (水题)
    SCAU 9502 ARDF
    SCAU 10686 DeathGod不知道的事情
    SCAU 8629 热身游戏(高精度)
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413796.html
Copyright © 2011-2022 走看看