专业的编程技术博客社区

网站首页 > 博客文章 正文

设计模式第2招第9式之解释器模式(解释器原理)

baijin 2024-10-01 07:33:05 博客文章 7 ℃ 0 评论

设计模式

【欢迎关注、点赞、评论、收藏和转发,您的肯定是我创作的最大动力!】

热烈欢迎关注【IT导航】学习编程从我做起。

设计模式源码地址:https://github.com/eraare/DesignPatterns

前言:

本系列文章共23篇,详细介绍GOF (Gang Of Four)所定义的23种设计模式。共分为三大类对应标题中的3大招,每类中的每一种设计模式对应3大招中的某一式:

第1招-创建型(共5式):单例模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式;

第2招-行为型(共11式):观察者模式,策略模式,命令模式,状态模式,解释器模式,迭代器模式,中介者模式,访问者模式,备忘录模式,责任链模式,模板方法模式;

第3招-结构型(共7式):适配器模式,外观模式,代理模式,装饰者模式,组合模式,桥接模式,享元模式。

计算机系统硬件部分:运算器、控制器、存储器、输入设备、输出设备。

内容摘要:

  1. 定义

  2. 应用场景

  3. Java代码实例

  4. 优缺点

  5. 小结

一、定义

还记得小学时学习的四则运算么?加减乘除。计算机程序一个最基本的功能就是进行数值计算。变量、运算符、表达式,可是你知道程序内部是怎么进行运算的么?怎么使用面向对象的方法实现一个解释器来解释表达式呢?请看解释器模式。

解释器模式:给定一种语言,定义其文法的一种表示,同时定义一个解释器,解释器使用此文法解释语言中的句子。

UML图

二、应用场景

  1. 需要解释执行一条语句时;

  2. 运算符表达式的解释执行;

  3. 解释器语言的解释器;

三、Java代码实例

来个解释Hello world.的解释器:

1. 定义解释器表达式接口;

2. 定义终结符表达式类;

3. 定义非终结符表达式类And和Or;

4. 客户端给定文法并使用解释器解释句子;

四、优缺点

  1. 优点:

  2. 易于维护。修改语法规则仅需修改相应的非终结符表达式;

  3. 易于扩展。添加语法只要增加非终结符类就可以了。

缺点:

  1. 每个语法都要对应一个非终结符表达示;

  2. 效率较低。由于其使用的大量的递归和循环,导致效率低下。

五、小结

解释器模式就是对表达示的解释执行,特定情况下才会使用。且容易导致效率低下、逻辑混乱(语法结构比较复杂时)等问题。所以一般不推荐使用此模式,学习此模式主要是为了理解大型框架,一般大型框架里会使用此模式做一些语法解析。

脑筋急转弯:小明知道试卷的答案,为什么还频频看同学的?

设计模式第2招第8式之模板方法模式

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表