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

洛阳市住房建设委员会网站百度指数支持数据下载吗

洛阳市住房建设委员会网站,百度指数支持数据下载吗,商城小程序价格,联图二维码生成器相关文章:技术成神之路:二十三种设计模式(导航页) 介绍 解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义一种语言的文法表示,并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达…

在这里插入图片描述
相关文章:技术成神之路:二十三种设计模式(导航页)

介绍

解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义一种语言的文法表示,并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达式的场景。

1. 定义


解释器模式定义了一种语言的文法表示,并定义一个解释器用来解释语言中的句子。

2. 主要作用


  • 提供一种方式来评估语言的文法或表达式:解释器模式允许系统解析和执行由文法定义的语言。
  • 简化对复杂表达式的处理:通过将复杂的表达式分解为简单的表达式,可以降低处理的复杂性。
  • 易于扩展:新的语法可以通过添加新的终结符或非终结符类轻松扩展。

3. 解决的问题


  • 处理和解析特定语言或表达式的需求。
  • 提供一种清晰的方式来定义文法及其解释。
  • 使得对文法和表达式的扩展变得简单明了。

4. 模式原理


包含角色:

  1. 抽象表达式(Expression): 一个接口或抽象类,定义了解释方法(interpret())。所有具体表达式都要实现这个接口。
  2. 终结符表达式(TerminalExpression): 具体的表达式类,代表语法中的终结符。在解释器中,这些类通常与输入的基本元素对应,如某个具体的字符或词汇。
  3. 非终结符表达式(NonterminalExpression): 这也是一个具体的表达式类,用于解释由多个表达式组成的复杂表达式。它通常用于构造更复杂的语法结构,并实现解释方法。
  4. 上下文(Context): 上下文对象用于存储解释器的状态信息,包括输入字符串和其他相关数据。它在解析过程中提供必要的上下文信息给各个表达式。

UML类图:
在这里插入图片描述
示例代码:

// 抽象表达式
interface Expression {int interpret();
}// 终结符表达式:数字
class Number implements Expression {private int number;public Number(int number) {this.number = number;}@Overridepublic int interpret() {return number;}
}// 非终结符表达式:加法
class Add implements Expression {private Expression leftExpression;private Expression rightExpression;public Add(Expression left, Expression right) {this.leftExpression = left;this.rightExpression = right;}@Overridepublic int interpret() {return leftExpression.interpret() + rightExpression.interpret();}
}// 非终结符表达式:减法
class Subtract implements Expression {private Expression leftExpression;private Expression rightExpression;public Subtract(Expression left, Expression right) {this.leftExpression = left;this.rightExpression = right;}@Overridepublic int interpret() {return leftExpression.interpret() - rightExpression.interpret();}
}

调用:

public class InterpreterDemo {public static void main(String[] args) {// 表达式:3 + 5Expression three = new Number(3);Expression five = new Number(5);Expression add = new Add(three, five);System.out.println("Result: " + add.interpret());  // 输出: Result: 8// 表达式:10 - 2Expression ten = new Number(10);Expression two = new Number(2);Expression subtract = new Subtract(ten, two);System.out.println("Result: " + subtract.interpret());  // 输出: Result: 8}
}

emm…这个模式才是冷门中的冷门,由于只能在特定领域使用,让我们动手写的情况很少,一般只是在源码中会见到,下面就举几个源码中的例子吧,加深下印象:

1. Java 正则表达式
正则大家都用过吧,可以把一些特定的字符 通过正则转化为我们预期的效果,在正则表达式中 Pattern类负责解析正则表达式的语法,而Matcher类则用于执行该模式的匹配。

2. Android 自定义 View 的属性解析
自定义视图会解析 XML 中定义的属性,在自定义视图的构造函数中,通过AttributeSet来解析XML中定义的属性,类似于解释器的功能。

3. DSL (领域特定语言) 解析
DSL 正如其名,在特定领域下的语言,这个语言可以由你自己定制,常见的在Kotlin中 有很多语法糖 都运用了DSL,在一些指定场景下很实用,在Android开发中,Gradle构建脚本使用一种基于Groovy的DSL来定义构建配置,Gradle解析器使用了解释器模式。

这个模式,不要求一定要掌握,但要见到认识,给面试官能吹nb就行了😎。

5. 优缺点


优点:

  • 易于改变和扩展文法。
  • 容易实现简单的语言解释器。

缺点:

  • 对复杂的文法不太适用,类数目会增加。
  • 解释器模式会引起性能问题。

6. 应用场景


  • 解析特定的语言或格式(例如:数学表达式、SQL查询、正则表达式)。
  • 定义简单的文法规则并提供语法分析功能。
  • 在领域特定语言(DSL)中,提供一种简单的语法解析方式。

7. 总结


解释器模式适用于简单的语法解析和解释场景,但不适合复杂的语法结构。它通过类和对象的组合,灵活定义和扩展语法结构。

至此,23种设计模式告一段落

http://www.hkea.cn/news/627316/

相关文章:

  • 制作应用的软件成都排名seo公司
  • 北京专业企业网站建设俄罗斯搜索引擎入口 yandex
  • wordpress 怎么改中文网站推广优化价格
  • 南山做网站公司怎么选择企业seo优化服务
  • 什么 电子商务网站建设与管百度招商加盟
  • 南召微网站开发手机优化大师官方版
  • 营销型网站技术特点网站推广网
  • 龙游县住房和城乡建设局网站百度seo优化方法
  • 深圳方维网站建设设计个人网站
  • wordpress 流量站百度应用
  • ps素材网seo在线工具
  • 岳阳网站开发公司html网站模板免费
  • 怎样用模板做网站优化网站技术
  • 全国新型疫情最新情况长沙网站搭建优化
  • 郑州网站建设规划seo建站教程
  • 购物网站 购物车界面如何做百度搜索网
  • 推广网站的图片怎么做外贸平台
  • 新手如何给自己的网站做优化bt种子磁力搜索
  • 成都学校网站制作遵义网站seo
  • d?t网站模版宁波seo在线优化哪家好
  • c做的网站淄博做网站的公司
  • 网站开发制作公司郑州网站建设外包
  • 注册域名用个人还是公司好长沙seo优化排名
  • 电子商务网站建设与维护展望今日新闻联播
  • 网站建设主流技术站长之家ping检测
  • 温州建设集团有限公司网站首页百度手机版网页
  • 广西网络干部学院官网seo推广人员
  • 可以做红娘的相亲网站江北seo综合优化外包
  • 公司建设网站需要注意什么软文广告示范
  • 高端网站建设 引擎技企业网页