前言:

关于23种设计模式的所有示例代码请参考:https://github.com/Wuchenwcf/MyCode/tree/master/DP

本文所述代码请参考:https://github.com/Wuchenwcf/MyCode/tree/master/DP/MyDB/Interpreter

一、解释器模式

本文将使用解释器模式实现将英文数字表达式转换为阿拉伯数字,类图如下:

如上图所示:

终结解释器是:GeExpression,HundredExpression

非终结解释器有:ThousandExpression,MillionExpression,BillionExpression

Context在其中起到的作用其实就是保存解释器的中间结果

最终的运行结果如下图:

可见,无论数字表达式有多长,都可以轻而易举地将其解析为阿拉伯数字。就是如此优秀。

解释器模式总结:

优点:解释器是一个简单的语法分析工具,具有可扩展性,修改语法只需要修改相应的关键字解释器就可以了,添加语法也只需要添加一个关键字解释器。

缺点:

递归调用效率不高

Interpreter解释器模式相关推荐

  1. 浅谈Interpreter解释器模式

    一.前言 这是我们23个设计模式中最后一个设计模式了,大家或许也没想到吧,竟然是编译原理上的编译器,这样说可能不对,因为编译器分为几个部分组成呢,比如词法分析器.语法分析器.语义分析器.中间代码优化器 ...

  2. Interpreter(解释器模式)行为型

    解释器模式 一.概述 二.结构 三.实例 四.适用场景 五.优缺点 一.概述 描述:当不懂英文的中国人和不懂中文的外国人交流时会存在沟通障碍.这时有种翻译器能将两种语言进行转换各个对方国家语言,然后进 ...

  3. Interpreter - 解释器模式

    定义 给定一个语言, 定于它的文法,并定义一个解释器,这个解释器使用改表示来解释语言中的句子. 类型 行为型模式 案例 像很熟知的正則表達式就是描写叙述字符串模式的一种标准语言,它为每个模式都构造了一 ...

  4. [转载] C#面向对象设计模式纵横谈——16 Interpreter解释器模式

    主讲:李建忠 来源:http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/CsharpOOD. ...

  5. 设计模式之解释器模式(Interpreter)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

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

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

  7. 设计模式循序渐进(9)解释器模式 Interpreter

    通过解释器模式实现阿拉伯数字与罗马数字的相互转换. 具体的模式分析解说日后补发. Delphi代码: unit uInt2RomeInterpreter; { 单元说明:将整数转换为罗马数字      ...

  8. 解释器模式(行为模式)

    设计模式之Interpreter - 解释器模式             2008-06-24 10:41:46 分类: 项目管理 源地址:http://blog.chinaunix.net/uid- ...

  9. 解释器模式(interpreter)解析例子

    摘要:本文深入浅出的讲述了设计模式中的解释器模式,并给出了简单的示例,例子浅显易懂,并附带源代码. 解释器模式属于行为型模式,其意图是给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该 ...

最新文章

  1. 浅析Web工程目录和tomcat目录
  2. 为什么程序员要学GC
  3. c语言编程功率谱,有谁会用C编写求功率谱(答案越多越好)
  4. c#实现多线程代码例子
  5. Redis源码剖析(二)io多路复用函数及事件驱动流程
  6. artTemplate基本用法
  7. ROS入门(八) make_plan的Server连接
  8. 视觉slam学习笔记以及课后习题《第五讲特征点法视觉里程计》
  9. pcie数据反_PCIe事务层の详解(一)
  10. 基于SpringBoot校园疫情防控管理系统 校园出入登记系统
  11. python多找表格进行数据对比
  12. uniapp 即时通讯_uniapp中与webview的即时通讯
  13. 长尾词推广系统推荐乐云seo_长尾词优化推广很好乐云seo
  14. h5案例分享 华谊电影《老炮儿》约战
  15. MarkdownPad2 自动生成目录
  16. 7-7 到底是不是太胖了(10 分)
  17. 《Edge Boxes: Locating Object Proposals from Edges》读后感
  18. IGES格式文件举例
  19. 丢包是啥意思?如何排查丢包原因呢?
  20. 看美剧学英文之最全攻略

热门文章

  1. igfxpers.exe
  2. P4/tutorials/exercises 官方练习
  3. 异常 | ARM _data_abort 异常处理流程
  4. SONY索尼A7S3意外断电后内存卡找不到视频文件的数据恢复
  5. js逆向-逆向部分技巧总结
  6. phpstorm todo的含义
  7. Google地图的Street View和Mapplets
  8. LeetCode340:至多包含 K 个不同字符的最长子串(python)
  9. 7-4 身份证号码最后一位 (100分)
  10. 严格校验身份证,最后一位如果是X 需大写