java实现23种设计模式之解释器模式

解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。

这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。

构建语法树,定义终结符与非终结符。

**应用实例:**编译器、运算表达式计算。

1package com.ceshi22; 2 3public interface Expression { 4 public int interpret(Context context); 5} 6 7package com.ceshi22; 8 9public class Context { 10 private int num1; 11 private int num2; 12 13 public Context(int num1, int num2) { 14 this.num1 = num1; 15 this.num2 = num2; 16 } 17 18 public int getNum1() { 19 return num1; 20 } 21 public void setNum1(int num1) { 22 this.num1 = num1; 23 } 24 public int getNum2() { 25 return num2; 26 } 27 public void setNum2(int num2) { 28 this.num2 = num2; 29 } 30} 31 32package com.ceshi22; 33 34public class Minus implements Expression { 35 36 @Override 37 public int interpret(Context context) { 38 return context.getNum1()-context.getNum2(); 39 } 40} 41 42package com.ceshi22; 43 44public class Plus implements Expression { 45 46 @Override 47 public int interpret(Context context) { 48 return context.getNum1()+context.getNum2(); 49 } 50} 51 52package com.ceshi22; 53 54public class Test { 55 56 public static void main(String[] args) { 57 58 // 计算9+2-8的值 59 int result = new Minus().interpret((new Context(new Plus() 60 .interpret(new Context(9, 2)), 8))); 61 System.out.println(result); 62 } 63}

测试结果:

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

《前端实战总结》之使用解释器模式实现获取元素Xpath路径的算法

前端领域里基于javascript的设计模式和算法有很多,在很多复杂应用中也扮演着很重要的角色,接下来就介绍一下javascript设计模式中的解释器模式,并用它来实现一个获取元素Xpath路径的算法。上期回顾《前端实战总结》之迭代器模式的N1种应用场景(https://juejin.im/post/6844904008616771591)

thinkphp3.2.3模板渲染支持三元表达式

thinkphp3.2.3模板渲染支持三元表达式{$status?'正常':'错误'}{$info'status'?$info'msg':$info'error'}注意:三元运算符中暂时不支持点语法。如下:           <divclass"modalhidefade"id'myModa