博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解释器模式
阅读量:6830 次
发布时间:2019-06-26

本文共 1788 字,大约阅读时间需要 5 分钟。

 

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

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
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

欢迎亲们评论指教。

转载地址:http://dvjkl.baihongyu.com/

你可能感兴趣的文章
sudo nopasswd
查看>>
用自己的话描述wcf中的传输安全与消息安全的区别(二)
查看>>
99 Lisp Problems 列表处理(P1~P28)
查看>>
实用图片滑块,传送带,幻灯片效果【附源码】
查看>>
Bluez SPP实现代码分析(转)
查看>>
android中给TextView或者Button的文字添加阴影效果
查看>>
读《被投资人“送”入看守所》一文有感(转)
查看>>
生产环境线上測试的慘淡人生
查看>>
代码阅读分析工具Understand 2.0试用
查看>>
Linux Load average负载详细解释
查看>>
Android多媒体框架图
查看>>
jps命令使用
查看>>
ADC In An FPGA
查看>>
#import </usr/include/objc/objc-class.h> not such file or directory问题的解决方法
查看>>
集装箱项目
查看>>
C#中的Action<>和Func<>
查看>>
关于opencv中人脸识别主函数的部分注释详解。
查看>>
SQLServer内核架构剖析 (转载)
查看>>
Android 风格化的 Toggle Buttons
查看>>
Eclipse中SVN的安装步骤(两种)和用法
查看>>