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

湖南建委网站站长统计推荐

湖南建委网站,站长统计推荐,懒人学做网站,网站js时间代码目录 1. 简介2. 代码2.1 Expression (抽象表达式类)2.2 TerminalExpression (终结符表达式类)2.3 OrExpression (非终结符表达式类)2.4 AndExpression (非终结符表达式类)2.5 Test &…

目录

  • 1. 简介
  • 2. 代码
    • 2.1 Expression (抽象表达式类)
    • 2.2 TerminalExpression (终结符表达式类)
    • 2.3 OrExpression (非终结符表达式类)
    • 2.4 AndExpression (非终结符表达式类)
    • 2.5 Test (客户端类)
    • 2.6 运行结果
  • 3. 优缺点
  • 4. 总结

1. 简介

解释器模式(Interpreter Pattern) 是一种行为设计模式。它给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
例如,对于一个简单的数学表达式语言,如 “3 + 4”,解释器模式可以用来解析和计算这个表达式。它把表达式拆分成数字和运算符等语法元素,然后按照一定的规则进行解释和计算。

解释器模式的结构

  • 抽象表达式(Abstract Expression)类
    这是所有具体表达式类的父类,它声明了一个抽象的解释方法。
  • 终结符表达式(Terminal Expression)类
    终结符表达式是文法中的终结符,它不能再被分解。在数学表达式中,数字就是终结符表达式。它实现了抽象表达式类中的解释方法,用于返回自身的值。
  • 非终结符表达式(Non - terminal Expression)类
    非终结符表达式包含一个或多个表达式,可以对包含的表达式进行操作。在数学表达式中,加法、减法等运算符对应的表达式就是非终结符表达式。它们通过调用子表达式的解释方法来实现自身的解释。
  • 客户端(Client)类
    客户端类负责构建表达式的抽象语法树,并调用解释器来解释表达式。

2. 代码

2.1 Expression (抽象表达式类)

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

2.2 TerminalExpression (终结符表达式类)

public class TerminalExpression implements Expression{private String data;public TerminalExpression(String data){this.data = data;}public boolean interpret(String context){if(context.contains(data))return true;elsereturn false;}
}

2.3 OrExpression (非终结符表达式类)

public class OrExpression implements Expression{private Expression expression1;private Expression expression2;public OrExpression(Expression expression1, Expression expression2){this.expression1 = expression1;this.expression2 = expression2;}public boolean interpret(String context){return expression1.interpret(context) || expression2.interpret(context);}
}

2.4 AndExpression (非终结符表达式类)

public class AndExpression implements Expression{private Expression expression1;private Expression expression2;public AndExpression(Expression expression1, Expression expression2){this.expression1 = expression1;this.expression2 = expression2;}public boolean interpret(String context){return expression1.interpret(context) && expression2.interpret(context);}
}

2.5 Test (客户端类)

public class Test {public static void main(String[] args) {Expression isMale = new TerminalExpression("male");Expression isMarriedWoman = new AndExpression(new TerminalExpression("married"),new TerminalExpression("woman"));System.out.println("John is male? " + isMale.interpret("John male"));System.out.println("Julie is a married women? " + isMarriedWoman.interpret("married woman"));System.out.println("Jake is a married women? " + isMarriedWoman.interpret("married man"));}
}

2.6 运行结果

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

3. 优缺点

  • 解释器模式的优点
    • 易于实现简单的语言解释器
      对于一些简单的特定领域语言(DSL),如简单的配置文件语法或者简单的数学表达式语言,解释器模式可以很方便地实现解析和执行。
    • 灵活性好
      可以方便地修改和扩展语法规则。如果要添加新的运算符或者语法元素,只需要创建新的表达式类并修改相应的解释逻辑即可。
  • 解释器模式的缺点
    • 复杂语法难以维护
      当语言的文法变得复杂时,解释器模式会导致大量的类,而且语法规则的维护和修改会变得非常困难。例如,对于一个完整的编程语言,使用解释器模式来实现整个语法解析和执行会非常复杂。
    • 效率可能较低
      解释器模式通常采用递归调用等方式来解释表达式,对于复杂的表达式或者大量的表达式解释,可能会导致性能问题,比如占用较多的内存和计算资源。

4. 总结

http://www.zhongyajixie.com/news/62194.html

相关文章:

  • 合肥网站建站公司恶意点击软件
  • 佛山做营销型网站建设云搜索下载
  • 网站建设的技术团队友链申请
  • wordpress修改用户名密码seo是什么专业的课程
  • 承德网站网站优化塔山双喜
  • 免费网站模块百度竞价托管外包
  • 建网站有什么用semiconductor
  • 东坑网站建设公司平台推广费用一般是多少
  • 安徽党组织标准化建设网站设计网络推广方案
  • 怎么建立一个简易的网站新闻头条今日新闻下载
  • 网站首页为什么不收录常用的网络推广方法有哪些
  • 国税网站页面申报撤销怎么做外链屏蔽逐步解除
  • 韶关营销型网站建设谷歌seo价格
  • 数据图表展示网站百度搜索量查询
  • 洛阳平台公司网站seo课程
  • 网站开发在线测试平台如何进行网站宣传推广
  • fontawesome 网站谷歌浏览器 官网下载
  • 做网站资讯运营视频推广
  • 江苏高效网站制作公司漳州seo网站快速排名
  • 网页加速器免费版 安卓优化疫情政策
  • vs2017 如何做网站什么是seo教程
  • 网站建设工作室需要哪些设备2022年最火文案
  • 做服装搭配的流行趋势网站淄博网站seo
  • 示范校建设验收网站移投界seo
  • 网站备案怎样提交到管局惠州seo招聘
  • 企业网站开发论文长春网站建设定制
  • 网站怎么做301重定向自己制作一个网页
  • 网站建设价格为何相差甚大徐州seo外包公司
  • 网站 wordpress网络营销策划书范文模板
  • 南皮 网站网络游戏推广