当前位置: 首页 > news >正文

服务器有了怎么做网站游戏链接点开即玩

服务器有了怎么做网站,游戏链接点开即玩,网站获取qq,为什么很少人敢娶外贸女解释器模式是一种行为设计模式#xff0c;可以解释语言的语法或表达式。给定一个语言#xff0c;定义它的文法的一种表示#xff0c;然后定义一个解释器#xff0c;使用该文法来解释语言中的句子。解释器模式提供了评估语言的语法或表达式的方式。 Interpreter is a behav…解释器模式是一种行为设计模式可以解释语言的语法或表达式。给定一个语言定义它的文法的一种表示然后定义一个解释器使用该文法来解释语言中的句子。解释器模式提供了评估语言的语法或表达式的方式。 Interpreter is a behavior design pattern. It can interpret the syntax or expressions of a language. Given a language, define a representation of its grammar, and then define an interpreter that uses the grammar to interpret sentences by the language.结构设计 解释器模式包含如下角色 Context上下文包含解释器之外的一些全局信息。 AbstractExpression抽象表达式声明一个抽象的解释操作这个接口为抽象语法树中所有的节点所共享。 TerminalExression终结符表达式实现与文法中的终结符相关联的解释操作。 NonterminalExpression非终结符表达式实现与文法中的非终结符相关联的解释操作对文法中每一条规则R1、R2、…、Rn 都需要一个具体的非终结符表达式类。 Client客户端构建一个句子它是TerminalExression和NonterminalExpression的实例的一个抽象语法树然后初始化Context并调用解释操作。 解释器模式类图表示如下 伪代码实现 接下来将使用代码介绍下解释器模式的实现。由于无法使用抽象的用例表示出解释器模式所以这里会基于特定的场景给出代码示例。这里以常见的四则运算(由于除法需要特殊处理这里暂不提供)的解析为例 介绍下解释器模式的实现。 // 1、抽象表达式声明一个抽象的解释操作接口 public interface Expression {int interpret(); }//2、终结符表达式实现与文法中的终结符相关联的解释操作这里是数字 public class NumberExpression implements Expression {private int number;public NumberExpression(int number) {this.number number;}public NumberExpression(String number) {this.number Integer.parseInt(number);}Overridepublic int interpret() {return this.number;} }// 3、非终结符表达式实现与文法中的非终结符相关联的解释操作这里是运算符 public class AdditionExpression implements Expression {private Expression firstExpression, secondExpression;public AdditionExpression(Expression firstExpression, Expression secondExpression) {this.firstExpression firstExpression;this.secondExpression secondExpression;}Overridepublic int interpret() {return Math.addExact(this.firstExpression.interpret(), this.secondExpression.interpret());}Overridepublic String toString() {return ;} } public class SubtractionExpression implements Expression {private Expression firstExpression, secondExpression;public SubtractionExpression(Expression firstExpression, Expression secondExpression) {this.firstExpression firstExpression;this.secondExpression secondExpression;}Overridepublic int interpret() {return Math.subtractExact(this.firstExpression.interpret(), this.secondExpression.interpret());}Overridepublic String toString() {return -;} } public class MultiplicationExpression implements Expression {private Expression firstExpression, secondExpression;public MultiplicationExpression(Expression firstExpression, Expression secondExpression) {this.firstExpression firstExpression;this.secondExpression secondExpression;}Overridepublic int interpret() {return Math.multiplyExact(this.firstExpression.interpret(), this.secondExpression.interpret());}Overridepublic String toString() {return *;} }// 4、表达式分析器将输入解析成表达式并执行相关的计算 public class ExpressionParser {private static final String ADD ;private static final String SUBTRACT -;private static final String MULTIPLY *;private static final String SPLITTER ;private LinkedListExpression stack new LinkedList();public int parse(String str) {String[] tokenList str.split(SPLITTER);for (String symbol : tokenList) {if (!isOperator(symbol)) {Expression numberExpression new NumberExpression(symbol);stack.push(numberExpression);} else {Expression firstExpression stack.pop();Expression secondExpression stack.pop();Expression operator getExpressionObject(firstExpression, secondExpression, symbol);if (operator null) {throw new RuntimeException(unknown symbol: symbol);}int result operator.interpret();NumberExpression resultExpression new NumberExpression(result);stack.push(resultExpression);}}return stack.pop().interpret();}private boolean isOperator(String symbol) {return symbol.equals(ADD) || symbol.equals(SUBTRACT) || symbol.equals(MULTIPLY);}private Expression getExpressionObject(Expression firstExpression, Expression secondExpression, String symbol) {switch (symbol) {case ADD:return new AdditionExpression(firstExpression, secondExpression);case SUBTRACT:return new SubtractionExpression(firstExpression, secondExpression);case MULTIPLY:return new MultiplicationExpression(firstExpression, secondExpression);default:return null;}} }// 5、客户端 public class InterpreterClient {public void test() {// (1) 定义输入String input 2 1 5 *;System.out.println(input is: input);// (2) 创建表达式分析器实例ExpressionParser expressionParser new ExpressionParser();// (3) 执行分析操作int result expressionParser.parse(input);System.out.println(result: result);} }适用场景 在以下情况下可以考虑使用解释器模式 (1)如果需要解释执行的语言中的句子可以表示为一个抽象语法树可以考虑使用解释器模式。如SQL 解析、符号处理引擎、正则表达式等。 (2) 对于重复出现的问题如果可以使用简单的语言来表达可以考虑使用解释器模式。 (3) 一个简单语法需要解释的场景可以考虑使用解释器模式。对于简单语法由于其文法规则较简单使用解释器模式要优于语法分析程序。 优缺点 解释器模式有以下优点 (1) 可扩展性好。因为该模式使用类来表示文法规则可以使用继承来改变或扩展该文法。 (2) 易于实现简单的文法。定义抽象语法树各个节点的类的实现大体相似。 但是该模式也存在以下缺点 (1) 可利用场景比较少。 (2) 对于复杂的文法比较难维护。包含许多规则的文法可能难以管理和维护。 (3) 会引起类膨胀。随着文法规则的复杂化类的规模也会随之膨胀。 (4) 使用了大量的循环和递归需要考虑效率问题。 参考 《设计模式 可复用面向对象软件的基础》 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 著, 李英军, 马晓星等译 https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/mediator.html 解释器模式 https://refactoringguru.cn/design-patterns/mediator 解释器模式 https://www.runoob.com/design-pattern/mediator-pattern.html 解释器模式 https://www.cnblogs.com/adamjwh/p/10959987.html 简说设计模式——解释器模式 https://springframework.guru/gang-of-four-design-patterns/interpreter-pattern/ Interpreter Pattern
http://www.eeditor.cn/news/124876/

相关文章:

  • 手机建网站公司杭州网站程序开发公司
  • 微信的微网站模板网站模板 html
  • 福清建设局网站简介wordpress右侧悬浮搜索菜单
  • 网站备案背景幕布企业网站建设心得
  • 青州做网站的公司二次开发的软件
  • 为什么要进行网站建设如何建立自己的个人网站
  • 呼和浩特城乡建设网站自己买服务器做网站
  • 专业做网站优化需要多久科技文化网站建设方案
  • 网站建设放入什么会计科目给公司做网站风险
  • 不属于网站后期维护网站服务器空间选择
  • 济源网站开发重庆施工员证查询网站
  • 建设企业网站需要了解什么wordpress插件翻译
  • 用wordpress付费网站专业的网站设计制作公司
  • 网站开发与实践题库中国联通网站备案
  • 贵港市网站建设科技有限公司一般是做什么的
  • 网站建设 源码登录腾讯邮箱企业邮箱入口
  • 如何制作自己的公司内部网站网站开发软件是什么专业
  • 网站开发及维护合同范本wordpress 4.0 文章标题翻译插件
  • 陕西网站制作html制作电影网站
  • 网站二维码制作网站推广运营
  • 郑州建站网站的公司html交易网站设计实例
  • 网站建设东莞wordpress文章作者
  • 全返网站建设免费seo网站自动推广软件
  • 著名的网站有哪些有没有专门做教程的网站
  • 易展 网站建设大兴网站建设推广
  • 建设网站海报文案建设专题网站
  • 高端摄影网站模板下载福田网站推广
  • 网络培训师长沙公交优化
  • 想买手表在哪个网站买是正品网站开发公司成都
  • 网站 多少篇文章才能上线网站建设为什么学flash