在软件的世界里存在着翻译机,只不过在软件中我们称之为解释器。在系统中如果某一特定类型的问题在频繁的发生,此时我们就有必要将这些问题的实例表述为一个语言中句子,

因此可以构建一个解释器,然后利用该解释器来解释这些句子来解决这些问题。选择器模式

先看下类图。

大话设计模式类图

再看下笔者的例子。

/*** 内容*/
public class Context {private String text;public Context(String text) {super();this.text = text;}public String getText() {return text;}public void setText(String text) {this.text = text;}
}

/*** 抽象父类*/
public abstract class AbstractExpression {public void Interpret(Context context) {if (null != context.getText() && context.getText().length() > 0) {String keyValue = context.getText().substring(0, 2);String key = keyValue.substring(0, 1);String value = keyValue.substring(1, 2);excute(key, value);if (context.getText().length() > 2) {context.setText(context.getText().substring(3));} else {context.setText("");}}}public abstract void excute(String key, String value);
}

/*** 大写字母转义*/
public class CharacterExpression extends AbstractExpression{@Overridepublic void excute(String key, String value) {System.out.print(key.getBytes()[0] + Integer.parseInt(value) + " ");}
}

/*** 小写字母转义*/
public class SmallExpression extends AbstractExpression {@Overridepublic void excute(String key, String value) {int tar = key.getBytes()[0] + Integer.parseInt(value);System.out.print((char)tar + " ");}
}

/*** 客户端*/
public class Text {public static void main(String[] args) {Context context = new Context("A1 B2 C3 D4 a1 b1 c1 d2");AbstractExpression expression = null;while(context.getText().length() > 0) {String first = context.getText().substring(0, 1);if (Character.isLowerCase(first.charAt(0))) {expression = new SmallExpression();} else {expression = new CharacterExpression();}expression.Interpret(context);}}
}

运行结果如下

66 68 70 72 b c d f 

这是笔者对解释器模式的理解,希望能够帮助学习解释器模式的小伙伴。

转载于:https://www.cnblogs.com/zhuxiansheng/p/8119003.html

java 之 解释器模式(大话设计模式)相关推荐

  1. 享元模式 -- 大话设计模式

    在今天,读书有时是件"麻烦"事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<大话设计模式>来祭奠那逝去的-- 享元模式:运用共享技术有效地支持大量细粒度的对 ...

  2. java interpreter_解释器模式(Interpreter)Java

    定义: 解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 结构图: AbstractExpression解释器模式 ...

  3. java 之 单例模式(大话设计模式)

    笔者记得去面试时曾被问起这个模式,当时还没有看过设计模式,对设计模式基本上一无所知,不过可以肯定的是笔者用过单例模式.当时回答的风马牛不相及,很尴尬. 也是从那时起,开始学习设计模式.今天所说的就是单 ...

  4. java 之 观察者模式(大话设计模式)

    观察者模式,笔者以前做校验订单时用过一次,只是不知道有这个模式,当时使用观察者省略了N多if else 在笔者看来观察者模式比较试用于一个对象状态改变后,很多个对象也要根据这个状态做相应的动作,当然观 ...

  5. 抽象工厂模式 -- 大话设计模式

    在今天,读书有时是件"麻烦"事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<大话设计模式>来祭奠那逝去的-- 待续-- 转载于:https://www.cn ...

  6. java的visitor模式_Java设计模式之Visitor模式是什么样的?

    作用于某个对象群中各个对象的操作.它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作.在Java中,Visitor模式实际上是分离了collection结构中的元素和对这些元素进行操作 ...

  7. java利用解释器模式实现简单计算

    一个利用解释器模式进行的简单计算,只支持+,-,*,/,() 地址:https://gitee.com/hellobb/tools/tree/master/computing

  8. java 肌汉模式_设计模式之原型模式详解(附源代码)

    原型模式(Prototype Pattern) 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. ...

  9. java实现备忘录模式_设计模式之第17章-备忘录模式(Java实现)

    设计模式之第17章-备忘录模式(Java实现) 好男人就是我,我就是曾小贤.最近陈赫和张子萱事件闹得那是一个沸沸扬扬.想想曾经每年都有爱情公寓陪伴的我现如今过年没有了爱情公寓总是感觉缺少点什么.不知道 ...

最新文章

  1. linux 下 将 shell script 与 一个桌面图标联系在一起 (2)
  2. OpenCV各个模块/各个文件夹的含义
  3. 苹果手机夜间模式怎么设置_微信夜间模式终于来了,苹果和安卓都适用!
  4. String、StringBuffer、StringBuilder区别
  5. 计算机裸机与应用程序及用户之间的桥梁是,2016计算机二级《MS Office》单选试题与解析...
  6. haproxy心跳检测_haproxy 非常完整的配置
  7. 在sqlplus中实现命令的上翻下翻功能
  8. JS:ES6-1 let 关键字
  9. 基于BC95之AT命令的学习
  10. 计算机教室建设方案ppt,屏蔽机房建设方案.ppt
  11. HRTF音频3D定位技术
  12. 三菱plc指令dediv_三菱plc中的DECMP指令是什么意思?
  13. 微信视频号头像怎么换?怎么设置?必看!5个思路帮你快速敲定头像
  14. 可视化大屏项目-大屏界面测试点梳理
  15. 云计算发展进入新阶段,掌握云计算的Linux运维未来发展前景怎么样?
  16. 串行DAC——基于小梅哥AC620
  17. 重磅 | 2018年淘宝村、淘宝镇名单正式公布!
  18. 如果还不想毕业,去这里可好?
  19. tplink显示网络连接已断开_TP-Link无线路由器经常突然断开连接,如何解决?
  20. asp.net+sqlserver固定资产管理系统系统c#项目

热门文章

  1. [转]解读ASP.NET 5 MVC6系列(7):依赖注入
  2. 用DirectX Audio和DirectShow播放声音和音乐(1)
  3. iOS标准库中常用数据结构和算法之内存池
  4. cavium公司xPliant芯片
  5. 并发编程实战-读书笔记
  6. 神奇的requestAnimationFrame
  7. SSRS 2012 交互式报表 -- 层次性文档结构图
  8. HTML5 虚拟键盘出现挡住输入框的解决办法
  9. 链接被点击的默认行为——带到另一个窗口
  10. 疯狂位图之——位图实现12GB无重复大整数集排序