Java解释器模式

43 篇文章 0 订阅
订阅专栏

解释器模式提供了一种评估计算语言语法或表达式的方法。 这种类型的模式属于行为模式。 这种模式涉及实现一个表达式接口,它告诉解释一个指定的上下文。 此模式用于SQL解析,符号处理引擎等。

实现示例

我们将创建一个接口Expression并且在具体的类实现这个Expression接口。 定义了一个TerminalExpression类,用作所讨论的上下文的主解释器。 其他的类 - OrExpressionAndExpression用于创建组合表达式。

InterpreterPatternDemo这是一个演示类,将使用Expression类来创建规则并演示表达式的解析。

实现解释器模式的结构如下图所示 -

第1步

创建表达式接口 -
Expression.java

public interface Expression {
   public boolean interpret(String context);
}

  
  
Java

第2步

创建实现上述接口的具体类。
TerminalExpression.java

public class TerminalExpression implements Expression {

   private String data;

   public TerminalExpression(String data){
      this.data = data; 
   }

   @Override
   public boolean interpret(String context) {

      if(context.contains(data)){
         return true;
      }
      return false;
   }
}

  
  
Java

OrExpression.java

public class OrExpression implements Expression {

   private Expression expr1 = null;
   private Expression expr2 = null;

   public OrExpression(Expression expr1, Expression expr2) { 
      this.expr1 = expr1;
      this.expr2 = expr2;
   }

   @Override
   public boolean interpret(String context) {        
      return expr1.interpret(context) || expr2.interpret(context);
   }
}

  
  
Java

AndExpression.java

public class AndExpression implements Expression {

   private Expression expr1 = null;
   private Expression expr2 = null;

   public AndExpression(Expression expr1, Expression expr2) { 
      this.expr1 = expr1;
      this.expr2 = expr2;
   }

   @Override
   public boolean interpret(String context) {        
      return expr1.interpret(context) && expr2.interpret(context);
   }
}

  
  
Java

第3步

reterPatternDemo使用Expression类来创建规则,然后解析它们。

InterpreterPatternDemo.java

public class InterpreterPatternDemo {

   //Rule: Robert and John are male
   public static Expression getMaleExpression(){
      Expression robert = new TerminalExpression("Robert");
      Expression john = new TerminalExpression("John");
      return new OrExpression(robert, john);        
   }

   //Rule: Julie is a married women
   public static Expression getMarriedWomanExpression(){
      Expression julie = new TerminalExpression("Julie");
      Expression married = new TerminalExpression("Married");
      return new AndExpression(julie, married);        
   }

   public static void main(String[] args) {
      Expression isMale = getMaleExpression();
      Expression isMarriedWoman = getMarriedWomanExpression();

      System.out.println("John is male? " + isMale.interpret("John"));
      System.out.println("Julie is a married women? " + isMarriedWoman.interpret("Married Julie"));
   }
}

  
  
Java

第4步

验证输出 -

John is male? true
Julie is a married women? true


23种设计模式(15)java解释器模式
08-28
解释器模式是一种行为设计模式,主要用于提供一个解析和执行特定语言或表达式的方式。在Java中,这种模式常用于创建自定义的简单语言或者解析器,例如配置文件、表达式计算等场景。以下是对该模式的详细说明: **...
Java设计模式解释器模式_动力节点Java学院整理
08-29
Java 设计模式解释器模式 解释器模式是一个行为类模式,它定义了一个语言的文法表示,并定义了一个解释器,该解释器使用该表示来解释语言中的句子。该模式的结构主要包括抽象解释器、终结符表达式、非终结符...
深入浅出解释器模式
专注JAVA开发
10-19 764
一、引子 其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中;在实际应用中,我们可能很少碰到去构造一个语言的文法的情况。        虽然你几乎用不到这个模式,但是看一看还是能受到一定的启发的。   二、定义与结构 解释器模式的定义如下:定义语言的文法,并且建立一个解释器解释该语言中的句子。它属于类的行为模式。这里的语
JAVA解释器模式
帅哥威的博客
09-16 2427
JAVA解释器模式 通过本文将学习到 1、前言 2、解释器模式的概念 3、解释器的UML图及角色结构 4、解释器模式的实现 5、解释器模式的优缺点及使用场景 6、总结 1、前言 上一场我聊过了命令模式,只是浅显的过了一遍。接下来要谈谈解释器模式了。 对了,突然想聊聊鲁迅先生,如果在整个学生时代要说我最喜欢的文学家的话,周树人先生当之无愧!他的语句犹如手术刀般的锋利,可以直刺心窝...
Java解释器模式】原理详解
最新发布
kiingking的博客
07-09 460
解释器模式(Interpreter Pattern)是一种行为型设计模式,它允许你定义语言的文法,并且构建一个解释器解释该语言中的句子。这个模式特别适用于当一个特定领域的问题可以用一种简单的语言来描述和解决时。解释器模式的核心在于构建一个抽象语法树(Abstract Syntax Tree, AST),并遍历这棵树来解释语言中的句子。解释器模式最适合于文法简单且不会频繁变化的场景,以及当性能不是主要关注点的情况下。对于复杂的语言解析,通常使用更专业的工具如ANTLR或Yacc。
Java解释器模式.docx
06-20
以下是一个简单的垒加/垒减功能的Java解释器模式实现: 1. **上下文类(Context)**:存储输入值和结果。 ```java @Getter@Setter public class Context { private String input; private int output; public ...
JAVA设计模式解释器模式详解
09-03
Java中,解释器模式通常用于处理简单的语言或表达式,例如布尔表达式计算。 在解释器模式中,有四个主要角色: 1. 抽象表达式(Expression)角色:这是所有具体表达式角色的基类,定义了一个公共接口,其中包含一...
Java设计模式解释器模式(Interpreter模式)介绍
09-03
解释器模式(Interpreter模式)是设计模式的一种,主要用于在程序设计中实现对特定语言或表达式的解释。在Java中,这种模式的应用可以帮助我们构建一种语言的解析器,从而理解和执行该语言的句子。以下是对解释器...
20 迭代器模式
hughtw的专栏
03-11 518
20 迭代器模式 概念:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示 适用场景     一个聚集对象不管是什么都需要遍历的时候     或者对聚集有多种方式遍历时 作用     迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。
java 解释器模式_Java解释器模式
weixin_27024175的博客
02-18 197
解释器模式提供了一种评估计算语言语法或表达式的方法。 这种类型的模式属于行为模式。 这种模式涉及实现一个表达式接口,它告诉解释一个指定的上下文。 此模式用于SQL解析,符号处理引擎等。实现示例我们将创建一个接口Expression并且在具体的类实现这个Expression接口。 定义了一个TerminalExpression类,用作所讨论的上下文的主解释器。 其他的类 - OrExpression...
java设计模式解释器模式
为者常成,行者常至
02-18 760
在编译原理中,一个算术表达式通过词法分析器形成词法单远,而这些词法单远再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树,(词法分析器和语法分析器都可以看做是解释器解释器模式是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器,使用该解释器解释语言中的句子(表达式)。
Java设计模式解释器模式
js_tengzi的博客
04-16 743
Java设计模式解释器模式前言正文一、定义二、文法规则和抽象语法树三、结构四、实现五、解释器模式优缺点与适用环境优点缺点适用环境 前言 解释器模式用于描述如何构成一个简单的语言解释器,主要应用于使用面向对象语言开发的解释器的设计。当需要开发一个新的语言时可以考虑使用解释器模式。 正文 在某些情况下,为了更好地描述某些特定类型的问题可以创建一种新的语言,这种语言拥有自己的表达式和结构,即文法规则,...
解释器模式Java
热门推荐
weixin_43486804的博客
08-10 1万+
解释器模式一般就是用于创造变成语言了什么的,一般使用不多,类似于易语言,它是将中文字符翻译成为C语言后,C 语言在编译运行的一种披着中文的C 语言,这个过程就大量使用了解释器模式 本次例子是一个将java部分语言转化为python的小程序(其实就2句) 我们知道java的输出是"System.out.println()" ,python的是“print()” java 的方法是void,pytho...
java解释器模式
uk8692的专栏
10-17 372
待更新…….
写文章

热门文章

  • 使用fastboot命令刷机流程详解 211800
  • APK反编译 191030
  • Android拨打电话的两种实现方法 73417
  • Apk去掉签名以及重新签名的方法 70255
  • Android蓝牙开发全面总结 31621

分类专栏

  • Java 43篇
  • Android 98篇
  • 编程语言 1篇
  • 架构模式 2篇
  • 版本控制 17篇
  • IDEA 3篇
  • Eclipse
  • Android studio 27篇
  • 数据库 1篇
  • 服务器 6篇
  • Gradle 12篇
  • Maven 6篇
  • GitHub 3篇
  • Linux 5篇
  • Windows 2篇
  • 开发工具 9篇

最新评论

  • 使用fastboot命令刷机流程详解

    weixin_43858003: 有版本安全补丁校验的,解锁设备会跳过校验

  • 使用fastboot命令刷机流程详解

    qq_53055877: 我刷完之后重新上锁无论如何都没法正常重启了,一直进fastboot,除非再解锁

  • Android之权限(permission)大全

    在下王大力: 建议搭配uniapp插件食用。https://ext.dcloud.net.cn/plugin?id=594。一些app比较常见的权限如麦克风,位置,相机都可以正常设置,但是自启动那些真机调试会返回undefined。

  • Android拨打电话的两种实现方法

    qhs1573: 利好爱尔眼科,Intent的action一样吗表情包

  • APK反编译

    小潘952: 求个联系方式

大家在看

  • C++ | Leetcode C++题解之第429题N叉树的层序遍历 128
  • Java | Leetcode Java题解之第429题N叉树的层序遍历 58
  • C语言 | Leetcode C语言题解之第429题N叉树的层序遍历
  • PHP中如何使用三元条件运算符
  • 【已解决 含pytorch 代码调试分析】pytorch 数据类型基础,与Python数据类型的区别,为什么要另外设置新的pytorch 数据类型? 570

最新文章

  • Android Studio gradle配置详解
  • git更新类型update type
  • SharedPreferences使用
2019年34篇
2018年102篇
2017年98篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家龙泉玻璃钢卡通雕塑海南酒店玻璃钢雕塑延吉玻璃钢雕塑推荐玻璃钢彩绘雕塑浮雕设备玻璃钢雕塑牛犁地图片本溪商场美陈仁怀玻璃钢雕塑好用的卡通雕塑玻璃钢张家港玻璃钢家具雕塑上饶玻璃钢座椅雕塑铁岭玻璃钢雕塑制作高邮玻璃钢卡通座椅雕塑玻璃钢雕塑寿命多少晋中玻璃钢商场美陈6米玻璃钢雕塑价格表四川节庆商场美陈厂家直销坐着的玻璃钢雕塑商场美陈灯光梅州美陈玻璃钢雕塑户外玻璃钢小品雕塑新乡玻璃钢卡通雕塑厂家哪家好四川玻璃钢雕塑哪里好莱芜卡通玻璃钢雕塑信阳玻璃钢艺术雕塑设计厂家生肖玻璃钢雕塑多少钱北京开业商场美陈哪里买玻璃钢雕塑招牌字吉林人物玻璃钢雕塑方法太原火烈鸟玻璃钢雕塑制作宝鸡玻璃钢房地产水景雕塑公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化