`
zhangweieye
  • 浏览: 9954 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

设计模式学习笔记(二十三:解释器模式)

 
阅读更多

1.1概述

    给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。这就是解释器模式的定义。

  对于某些问题,我们可能希望用简单的语言来描述,即希望用简单的语言来实现一些操作,比如用简单语言实现简单的翻译操作,用户输入Teacher drink water,程序输出“老师喝水”。学习使用解释器模式需要用到一些形式语言的知识,和编译原理课程中相关知识点比较接近,个人觉得编译原理中相关理论知识比较晦涩,在此处就不继续往下细究具体原理,有兴趣的同学可以去看一看编译原理的教材。

  例如,一个语言一旦有了语句,就可以让程序根据语句进行某种操作。定义一个简单语言,如果使用程序实现该语言时,定义的基本操作是将终结符号的值翻译为汉语,如Teacher翻译为“老师”、Tiger翻译为“老虎”,那么当用户使用该语言输入“Teacher drink water”后,程序输出“老师喝水”。

 

 

1.2模式的结构

解释器模式包括以下四种角色:

(1)抽象表达式(AbstractExpression):该角色是一个接口,负责定义抽象的解释操作。

(2)终结符表达式(TerminalExpression):实现AbstractExpression接口的类。该类将接口中的解释操作实现为与文法中的终结符相关联的操作,即文法中每个终结符号需要一个TerminalExpression类。

(3)非终结符表达式(NonterminalExpression):实现AbstractExpression接口的类。文法中的每一条规则都需要一个NonterminalExpression类。NonterminalExpression类为文法中的非终结符号实现解释操作,该解释操作通常使用递归调用表示文法规则中的那些对象的解释操作。

(4)上下文(Context):包含解释器之外的一些全局信息。

解释器模式结构的类图如下图所示:

 

 图一:解释器模式的类图(PS:类图画的不标准,此处仅作参考哦)

 

 

1.3解释器模式的优点

1)将每一个语法规则表示成一个类,方便于实现简单的语言。

2)由于使用类表示语法规则,可以教容易改变或扩展语言的行为。

3)通过在类结构中加入新的方法,可以在解释的同时增加新的行为。

 

 

1.4适合使用解释器模式的情景

1)当有一个简单的语言需要解释执行,并且可以将该语言的每一个规则表示为一个类时,就可以使用解释器模式。

分享到:
评论

相关推荐

    23种设计模式学习笔记

    这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...

    C#设计模式学习笔记

    以下是对“C#设计模式学习笔记”中涉及的一些关键知识点的详细解释。 1. **设计模式的基本概念**: 设计模式是一种在特定上下文中已被证明有效的解决方案模板,它描述了如何在软件设计中解决常见问题。设计模式...

    尚硅谷设计模式源码笔记课件.zip

    行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员...

    23种设计模式学习笔记及源码

    这个压缩包文件包含了23种设计模式的学习笔记和源码,旨在帮助开发者深入理解并熟练运用这些模式。以下是对每种设计模式的详细解释,以及它们在Java编程中的应用。 1. **单例模式**:确保一个类只有一个实例,并...

    设计模式学习笔记

    3. 解释器模式(Interpreter):给定语言的文法表示,并提供一个解释器来处理该语言中的句子。 4. 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而不暴露其底层表示。 5. 中介者模式(Mediator):...

    根据《JAVA与设计模式》整理的笔记及示例代码

    3. 解释器模式:给定一个语言,定义它的文法表示,并提供一个解释器。 4. 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 5. 观察者模式:定义对象间的一对多依赖关系,当一个对象的状态...

    HeadFirst 设计模式学习笔记3--装饰模式 Demo

    在“HeadFirst 设计模式学习笔记3--装饰模式 Demo”中,作者通过实例讲解了装饰模式的基本概念、结构和应用场景。这篇文章可能是从CSDN博客平台上的一个链接访问的,遗憾的是,由于我们当前无法直接访问该链接,所以...

    300Java设计模式部分学习笔记

    5. 解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 6. 访问者模式(Visitor Pattern):表示一个作用于某对象结构中的各...

    设计模式笔记

    - 解释器模式:定义一个语言的文法,并提供一个解释器来处理这种语言的实例。 - 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 观察者模式:定义对象间的一对多依赖关系,当一个...

    GoF 23种设计模式学习笔记

    "GoF 23种设计模式学习笔记" 是一个深入探讨这23个经典设计模式的资源,这些模式最初由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者在1994年的著作《设计模式:可复用面向对象软件的基础》中...

    韩顺平_Java设计模式笔记.docx

    - **Spring框架中解释器设计模式的应用**:Spring框架中的`SpelExpressionParser`使用了解释器模式,用于解析Spring表达式语言(SpEL)。 - **单例设计模式** - **实现方式**:单例模式共有8种实现方式,包括...

    23中设计模式学习笔记.docx

    ### 23种设计模式学习笔记 #### 一、软件设计模式的概念与意义 **概念:** 软件设计模式(Software Design Pattern),又称设计模式,是一套被广泛采用、经过整理和分类的代码设计经验总结。它针对软件设计过程中...

    《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式

    《设计模式:可复用面向对象软件的基础》一书介绍了23种经典的设计模式,这些模式大致可以分为三大类: 1. **创建型模式**:专注于对象的创建机制,确保系统在合适的时机创建正确的对象。 - **单例模式**...

    #资源大人分享计划# 设计模式学习笔记.rar

    在这个“#资源大人分享计划# 设计模式学习笔记.rar”压缩包中,我们可以期待找到一系列关于设计模式的详细学习资料,包括定义、类图、代码示例以及各种使用场景,这些都将帮助我们深入理解并掌握设计模式。...

    图解设计模式 ,结城浩著 学习笔记

    根据给定的信息“图解设计模式,结城浩著学习笔记”,我们可以推断出这份文档主要涉及了设计模式的学习和理解。《图解设计模式》是一本由日本著名程序员结城浩撰写的书籍,该书以图形化的方式深入浅出地讲解了软件...

    韩顺平_java设计模式笔记

    解释器设计模式用于构建解析表达式的系统,例如Spring框架中的SpelExpressionParser就使用了这一模式,它能解析表达式并执行计算。UML类图通常包含抽象表达式类、终结符表达式类和非终结符表达式类等角色。 单例...

    Java 版设计模式学习笔记-java-design-patterns.zip

    这个“Java版设计模式学习笔记”涵盖了多种设计模式,旨在帮助开发者更好地理解和应用这些模式。让我们深入探讨一下其中可能包含的关键知识点。 一、单例模式 单例模式确保一个类只有一个实例,并提供一个全局访问...

    23个设计模式图解--学习笔记

    在《23个设计模式图解--学习笔记》中,我们探讨了这些模式,以便于理解和应用到实际开发中。以下是这23个设计模式的详细说明: 1. **工厂方法**(Factory Method):定义一个用于创建对象的接口,让子类决定实例化...

    23种面向对象设计模式

    文档中的“23种设计模式学习笔记.doc”可能包含了对这23种模式的详细解释和实例,而“设计模式之我爱我家.doc”可能从一个更生活化的角度来阐述设计模式的概念。“软件23种设计模式,超级经典的.pdf”可能是对这些...

    设计模式教程及笔记

    行为型模式则关注对象之间的交互和责任分配,如策略模式、模板方法模式、观察者模式、访问者模式、命令模式、迭代器模式、职责链模式、解释器模式和备忘录模式等。 C++作为一种静态类型、编译式、面向对象的语言,...

Global site tag (gtag.js) - Google Analytics