解释器模式 电玩女神 2022-07-13 12:48 335阅读 0赞 ## 解释器模式 ## #### 定义: #### 提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。 #### 解释器角色: #### * **抽象解释器** 具体的解释任务由各个实现类完成,具体的解释器分别为终结解释器和非终结解释器。 * **终结解释器** 实现与文法中的元素相关联的解释操作,通常一个解释器模式中只有一个终结 表达式,但有多个实例,对应不同的终结符。 * **非终结解释器** 文法中的每条规则对应于一个非终结表达式,非终结符表达式根据逻辑的复杂程度而增加,原则上每个文法规则都对应一个非终结符表达式 #### 优缺点 #### * 优点 拓展性强。 * 缺点 类比较多。不宜维护。 **如果不是场景很符合尽量不要使用**。 -------------------- #### 实例: #### 以简单的四则运算为例:如1+2-3+4-5。 * **Expression(抽象解释器)** public abstract class Expression { public abstract int getValue(); } * **ValueExpression(终结解释器)**:表示数值 public class ValueExpression extends Expression { private int value; public ValueExpression(int value) { this.value = value; } @Override public int getValue() { return value; } } * **AddExpression(非终结解释器)**:表示加号 public class AddExpression extends Expression { private ValueExpression left; private ValueExpression right; public AddExpression(ValueExpression left, ValueExpression right) { this.left = left; this.right = right; } @Override public int getValue() { return left.getValue() + right.getValue(); } } * **SubExpression(非终结解释器)**:表示减号 public class SubExpression extends Expression { private ValueExpression left; private ValueExpression riht; public SubExpression(ValueExpression left, ValueExpression right) { this.left = left; this.riht = right; } @Override public int getValue() { return left.getValue() - riht.getValue(); } } * 实例使用 public class Test { public static void main(String[] args) { //1+2-3+4-5 ValueExpression value1 = new ValueExpression(1); ValueExpression value2 = new ValueExpression(2); ValueExpression value3 = new ValueExpression(3); ValueExpression value4 = new ValueExpression(4); ValueExpression value5 = new ValueExpression(5); Expression result = new AddExpression(value1, value2); result = new SubExpression(new ValueExpression(result.getValue()), value3); result = new AddExpression(new ValueExpression(result.getValue()), value4); result = new SubExpression(new ValueExpression(result.getValue()), value5); System.out.println("result == " + result.getValue()); } } 打印结果: result == -1
相关 解释器模式 概述 ![watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5rW35rex5LiN6KeB6bK4_size_1 男娘i/ 2023年10月03日 18:21/ 0 赞/ 30 阅读
相关 设计模式——解释器模式 设计模式——解释器模式 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly 客官°小女子只卖身不卖艺/ 2022年12月29日 14:16/ 0 赞/ 317 阅读
相关 解释器模式 转载:[解释器模式 - C语言中文网][- C] > 在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将 Bertha 。/ 2022年09月01日 14:49/ 0 赞/ 304 阅读
相关 解释器模式 解释器模式 定义: 提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。 解释器角色: 抽 电玩女神/ 2022年07月13日 12:48/ 0 赞/ 336 阅读
相关 解释器模式 1.使用场景: 这个设计模式一般用来解释语句中的句子,实际开发中EL表达式或者正则表达式的解释器就是采用这种设计模式等。 2.UML表示 Expression:抽 柔情只为你懂/ 2022年05月31日 09:27/ 0 赞/ 329 阅读
相关 设计模式 : 解释器模式 解释器模式(interpreter) : 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 解释器模式需要解决的是 以你之姓@/ 2022年05月27日 07:57/ 0 赞/ 365 阅读
相关 解释器模式 前言 解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器吗,这个解释器使用该表示来解释语言中的句子。 一、抽象表达式 矫情吗;*/ 2021年12月09日 00:55/ 0 赞/ 444 阅读
相关 解释器模式 23.解释器模式 ![70][] class Program { static void Main(string[] a Dear 丶/ 2021年09月17日 00:08/ 0 赞/ 486 阅读
相关 解释器模式 释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式... 小灰灰/ 2020年06月13日 05:43/ 0 赞/ 799 阅读
还没有评论,来说两句吧...