首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

精读《设计模式 - Interpreter 解释器模式

Interpreter(解释器模式Interpreter(解释器模式)属于行为型模式。 意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器。这个解释器使用该表示来解释语言中的句子。...举例子 如果看不懂上面的意图介绍,没有关系,设计模式需要在日常工作里用起来,结合例子可以加深你的理解,下面我准备了三个例子,让你体会什么场景下会用到这种设计模式。...代码编译器 程序语言也因为其天然是字符串的原因,和 SQL、日常语言都类似,需要一种模式解析后才能工作。...terminal = new TerminalExpression(["1", "2"]) const add = new AddExpression(terminal, terminal) add.interpreter...("1 + 1") // true add.interpreter("1 + 2") // true add.interpreter("1 + 3") // false add.interpreter(

44420
您找到你想要的搜索结果了吗?
是的
没有找到

设计模式实战 - 解释器模式Interpreter Pattern)

然后赋值,运算出结果 需求已经开发完毕,公式可以自由定义,只要符合规则(有变量有运算符合)就可以运算出结果;若需要扩展也非常容易,只要增加BaseSymbolExpression的子类就可以了,这就是解释器模式...1 定义与类型 解释器模式 Given a language, define a representation for its grammar along with an interpreter that...解释器模式通用类图 ● AbstractExpression——抽象解释器 具体的解释任务由各个实现类完成 具体的解释器分别由TerminalExpression和Non-terminalExpression...解释器是一个比较少用的模式,以下为其通用源码,可以作为参考。抽象表达式通常只有一个方法,如代码清单27-8所示。 适用场景 ? 优点 ? 缺点 ? 相关设计模式 ?...适配器模式不需要预先知道要适配的规则 而解释器模式则需要将规则写好,并根据规则进行解释 实际应用 Java 正则对象 ? Spring解析器 ?

89620

23种设计模式之解释器模式Interpreter

概述 解释器模式Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。...这种模式被用在 SQL 解析、符号处理引擎等。 解释器模式的优缺点 优点 能够很容易地改变和扩展文法,因为该模式使用类来表示文法规则,你可使用继承来改变或扩展该文法。...缺点 解释器模式为文法中的每一条规则至少定义了一个类,因此包含许多规则的文法可能难以管理和维护。 易引起类膨胀。 可利用的场景较少。 解释器模式采用递归调用方法。...解释器模式的结构和实现 模式结构 AbstrExpression: 抽象表达式 TerminalExpression: 终结符表达式 NonterminalExpression: 非终结符表达式 Context...3、解释器模式会引起类膨胀。 4、解释器模式采用递归调用方法。 使用场景: 1、可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。 2、一些重复出现的问题可以用一种简单的语言来进行表达。

38730

二十、解释器模式 ( Interpreter Pattern )

解释器模式Interpreter Pattern)实现了一个表达式接口,该接口解释一个特定的上下文 这种模式被用在 SQL 解析、符号处理引擎等 解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式...编译器、运算表达式计算 7、优点: 1、可扩展性比较好,灵活 2、增加了新的解释表达式的方式 3、易于实现简单文法 8、缺点: 1、可利用场景比较少 2、对于复杂的文法比较难维护 3、解释器模式会引起类膨胀...4、解释器模式采用递归调用方法 9、使用场景: 1、可以将一个需要解释执行的语言中的句子表示为一个抽象语法树 2、一些重复出现的问题可以用一种简单的语言来进行表达 3、一个简单语法需要解释的场景

20510

解释器模式 Interpreter 行为型 设计模式(十九)

解释器模式Interpreter) ? 考虑上图中计算器的例子 设计可以用于计算加减运算(简单起见,省略乘除),你会怎么做? ...总结 解释器模式是用于解析一种“语言”,对于使用频率较高的,模式、公式化的场景,可以考虑使用解释器模式。...“格式”这几个关键词 解释器模式将语法规则抽象的表述为类 解释器模式为自定义语言的设计和实现提供了一种解决方案,它用于定义一组文法规则并通过这组文法规则来解释语言中的句子。...,仅仅关注解析处理 所以个人看法: 但凡你的问题场景可以抽象为一种语言,也就是有规则、公式,有套路就可以使用解释器模式 不过如果有替代方法,能不用就不用 如果非要用,你也不要自己写 原文地址:解释器模式...Interpreter 行为型 设计模式(十九)

50430

设计模式的征途—23.解释器(Interpreter模式

如果所基于的编程语言是面向对象语言,此时可以使用解释器模式实现自定义语言。...解释器模式Interpreter) 学习难度:★★★★★ 使用频率:★☆☆☆☆ 一、格式化指令的需求背景 Background:M公司开发了一套简单的基于字符界面的格式化指令,可以根据输入的指令在字符界面输出一些格式化内容...2.1 解释器模式简介   解释器模式是一种使用频率相对较低但学习难度较大的设计模式,它主要用于描述如何使用面向对象语言构成一个简单的语言解释器。...解释器(Interpreter模式:定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种行为型模式。...2.2 解释器模式结构 ?

1K20

PHP设计模式之解释器(Interpreter模式入门与应用详解

本文实例讲述了PHP设计模式之解释器(Interpreter模式。分享给大家供大家参考,具体如下: 解释器模式,它是什么呢?...php //解释器模式 用于分析一个实体的关键元素,并且针对每个元素提供自己的解释或相应动作 //解释器模式非常常用,比如PHP的模板引擎 就是非常常见的一种解释器模式 class template {...完事,咱在网上看的,对于解释器(Interpreter模式,还有另外一种说法,那就是它包括一个具有复合类分层结构的文法表现,规则是映射到类,跟随在文法后面的表达式可以被转换成一个抽象的语法树,除了复合模式的实例对象图外...class Interpreter{ private $interpreter; private $content; function __construct($expression){...1,2,3,0,0); $interpreter = new Interpreter($expression); $interpreter- execute(); ?

40631

ClickHouse 的 Parser与Interpreter

Parser和Interpreter是非常重要的两组接口: Parser分析器负责创建AST对象; Interpreter解释器则负责解释AST,并进一步创建查询的执行管道。...Interpreter模式也类似于Composite模式。Composite模式通常会为单个对象和群组对象定义一个公共接口。...不过,Composite模式并不要求支持以不同方式组织的结构,尽管该模式可以支持这些结构。...Interpreter模式通常都会涉及不同类型的组合结构(Interpreter模式通常处于Composite模式结构之上)。一个类组成其他组件的方式定义了解释器类实现或解释一个操作的方式。...Interpreter模式的主要意图是可以按照自己定义的组合规则集合来组合可执行对象。

1.1K30

Zeppelin Interpreter全面解析

请注意,下文Interpreter与解释器混用。...image.png Interpreter绑定模式 在解释器设置中,可以选择共享、作用域或隔离的解释器绑定模式之一。 在共享模式下,使用此解释器的每个笔记/用户将共享一个解释器实例。...范围和隔离模式可以在 2 个维度下使用:每个用户或每个注释。 例如 在 note范围模式下,每个note将在同一个解释器进程中创建一个新的解释器实例。...在每个note隔离模式下,每个note都会创建一个新的解释器进程。 image.png Interpreter生命周期管理 在 0.8.0 之前,Zeppelin 没有解释器的生命周期管理。...该解释器进程何时启动由解释器绑定模式设置决定。 所以用户需要了解 Zeppelin 的解释器绑定模式设置,并注意解释器进程何时启动。

1.6K10

【愚公系列】2021年12月 二十三种设计模式(十五)-解释器模式(Interpreter Pattern)

文章目录 前言 一、解释器模式(Interpreter Pattern) 二、使用步骤 角色 示例 总结 优点 缺点 使用场景 ---- 前言 设计模式(Design pattern)是一套被反复使用、...使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。...---- 提示:以下是本篇文章正文内容,下面案例可供参考 一、解释器模式(Interpreter Pattern) 解释器模式属于行为型模式,给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子...解释器模式提供了评估语言的语法或表达式的方式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被广泛地应用在 SQL 解析、符号处理引擎等领域。...public class Program { private static Interpreter _interpreter = new Interpreter(); public

17550
领券