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

网站布局技术网站建设设

网站布局技术,网站建设设,苏州专业网站设计,租网站服务器一、介绍#xff1a; 1、定义#xff1a;解释器(Interpreter)模式是一种对象的行为模式。给定一个语言#xff0c;定义它的文法的一种表示#xff0c;并定义一个解释器#xff0c;这个解释器使用该表示来解释语言中的句子。 2、组成结构#xff1a; #xff08;1…一、介绍 1、定义解释器(Interpreter)模式是一种对象的行为模式。给定一个语言定义它的文法的一种表示并定义一个解释器这个解释器使用该表示来解释语言中的句子。 2、组成结构 1AbstractExpression(抽象表达式)约定解释器的解释操作主要是一个interpret()方法。这个接口作为抽象语法树中所有节点即终结符表达式和非终结符表达式所共享 public abstract class AbstractExpression {public abstract void interpret(Context context); } 2 TerminalExpression终结符表达式用来实现文法中和终结符相关的解释操作不再包含其它的解释器如果用组合模式来构建抽象语法树的话就相当于组合模式中的叶子对象可以有多种终结符解释器。 public class TerminalExpression extends AbstractExpression{Overridepublic void interpret(Context context) {System.out.println(终结符解释器);} } 3NonterminalExpression非终结表达式用来实现文法中和非终结符相关的解释操作通常一个解释器对应一个语法规则可以包含其它的解释器如果用组合模式来构建抽象语法树的话就相当于组合模式中的组合对象可以有多种非终结符解释器。公式RR1R2中R1、R2为终结符表达式为非终结表达式其后需要跟随一个终结符表达式。 public class NonterminalExpression extends AbstractExpression{Overridepublic void interpret(Context context) {System.out.println(非终结符解释器);} } 4 Context类包含解释器之外的一些全局信息也称“上下文”常用HashMap来代替通常包含解释器之外的一些全局信息解释器需要的数据或是公共的功能。 public class Context {private String input;private String output;//Get、Set方法省略 } 客户端构建文法表示的抽象语法树Abstract Syntax Tree)该抽象语法树由终结符表达式和非终结符表达式的实例装配而成并调用解释操作interpret()方法。  Context context new Context();ListAbstractExpression list new ArrayListAbstractExpression();list.add(new TerminalExpression());list.add(new NonterminalExpression());list.add(new TerminalExpression());list.add(new NonterminalExpression());for (AbstractExpression abstractExpression : list) {abstractExpression.interpret(context);}3、适用场景解释器模式似乎使用面不是很广它描述了一个语言解释器是如何构成的在实际应用中我们可能很少去构造一个语言的文法。建议在以下情况中选用解释器模式 当有一个语言需要解释执行并且可以将语言中的句子表示为一个抽象语法树的时候可以考虑使用解释器模式。   二、demo: 1、加减法计算器 //抽象表达式 public interface AbstractExpression {int interprete(HashMapString, Integer var); }//终结符表达式 public class VarExpression implements AbstractExpression {private String key;public VarExpression(String key) {this.key key;}public int interprete(HashMapString, Integer var) {return (Integer) var.get(this.key);} }//加法符号 非终结表达式 public class AddExpression implements AbstractExpression{private AbstractExpression left;private AbstractExpression right;public AddExpression(AbstractExpression left, AbstractExpression right) {this.left left;this.right right;}// 把左右两个表达式运算的结果加起来public int interprete(HashMapString, Integer var) {return this.left.interprete(var) this.right.interprete(var);} }//减法符号 非终结表达式 public class SubExpression implements AbstractExpression{private AbstractExpression left;private AbstractExpression right;public SubExpression(AbstractExpression left, AbstractExpression right) {this.left left;this.right right;}// 把左右两个表达式运算的结果加起来public int interprete(HashMapString, Integer var) {return this.left.interprete(var) - this.right.interprete(var);} }//封装计算器类 public class Calculator {private AbstractExpression expression;public Calculator(String expStr) {// 定义一个堆栈安排运算的先后顺序StackAbstractExpression stack new StackAbstractExpression();// 表达式拆分为字符数组char[] charArray expStr.toCharArray();// 运算AbstractExpression left null;AbstractExpression right null;for (int i 0; i charArray.length; i) {switch (charArray[i]) {case :left stack.pop();right new VarExpression(String.valueOf(charArray[i]));stack.push(new AddExpression(left, right));break;case -:left stack.pop();right new VarExpression(String.valueOf(charArray[i]));stack.push(new SubExpression(left, right));break;default: // 公式中的变量stack.push(new VarExpression(String.valueOf(charArray[i])));}}// 把运算结果抛出来this.expression stack.pop();}// 计算结果public int calculate(HashMapString, Integer var) {return this.expression.interprete(var);} }//客户端 public static void main(String args[]){// 构造运算元素的值列表HashMapString, Integer ctx new HashMapString, Integer();ctx.put(a, 10);ctx.put(b, 20);ctx.put(c, 30);ctx.put(d, 40);ctx.put(e, 50);ctx.put(f, 60);Calculator calc new Calculator(ab-c);int result calc.calculate(ctx);System.out.println(Result of ab-c: result);calc new Calculator(d-a-bc);result calc.calculate(ctx);System.out.println(Result of d-a-bc: result);}输出 Result of ab-c: 0 Result of d-a-bc: 40
http://www.yutouwan.com/news/352877/

相关文章:

  • 网站建设官方商城做调查问卷换赏金的网站
  • 淘宝网站建设的目标wordpress如何解压
  • 网站建设中两个月了网上注册公司流程和费用营业执照
  • 公司开通网站无锡专业做网站的
  • 移动网站 html5可以免费发外链的论坛
  • 郑州微网站织梦手机网站模板删除不了
  • dns 本地 网站建设电子商务策划书模板
  • 企业网站建设及前期准备石家庄网站运营
  • 电商网站开发的底层架构微信公众号文章编辑wordpress
  • 昆明网站建设一条龙甘肃省住房与城乡建设厅网站首页
  • 网站好坏标准免费装修设计app
  • 辽宁品质网站建设价格实惠黄骅贴吧二手房买卖
  • soso搜搜网站收录提交入口加盟网站建设公司
  • 张掖北京网站建设横向网站源码
  • 网站数据怎么会丢失建设单位经常去哪个网站
  • 怒江北京网站建设模板网站建设价位
  • 静态中英文网站怎么做兼职网站编辑
  • 培训网站建设公司如何在百度上搜到网站
  • 参考文献网站开发wordpress改密码
  • 优秀国外网站设计赏析宁波网站推广建站
  • 网站备案方案制作公司网页可以用网上图片吗
  • 网站建设 公司 天津如何用ad做网站
  • 浙江嘉兴网站建设网页特效大全
  • jq做6个网站做什么好wordpress网站速度优化
  • 网站二维码怎么做的在网上做广告怎么做
  • 医保局网站建设网站建设分金手指排名十八
  • 银川网站建设有哪些网站开发答辩演讲
  • 商业网点建设开发中心网站西双版纳网站建设公司
  • 郑州网站建设模板制作网上商城推广方案
  • 网站降权投诉哪儿能做网站建设