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

    欢迎亲们评论指教。

  • 相关阅读:
    CentOS 7搭建SVN服务器
    CentOS 配置MySQL允许远程登录
    使用nginx实现基于tcp协议的https协议多域名指向的分别转发功能
    centos7 设置内核启动顺序
    nginx 针对特定地区的ip进行规则匹配
    【转】golang 交叉编译
    linux修改用户id,组id
    etcd 增减节点
    [转]etcd 启用 https
    windows 多网卡路由设置
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413796.html
Copyright © 2011-2022 走看看