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

行业门户网站如何做做竞价推广大概多少钱

行业门户网站如何做,做竞价推广大概多少钱,潍坊做网站的网络公司,wordpress收费模版👈️上一篇:状态模式 设计模式-专栏👈️ 文章目录 解释器模式定义英文原话直译 解释器模式中的角色1. 抽象表达式(AbstractExpression)2. 终端表达式(TerminalExpression)3. 非终端表达式(Non…

👈️上一篇:状态模式

设计模式-专栏👈️


文章目录

  • 解释器模式
  • 定义
    • 英文原话
    • 直译
  • 解释器模式中的角色
    • 1. 抽象表达式(AbstractExpression)
    • 2. 终端表达式(TerminalExpression)
    • 3. 非终端表达式(NonterminalExpression)
    • 4. 环境(Context)
    • 5. 客户端(Client)
    • 代码示例:算术表达式求值
      • 类图
      • 代码
  • 解释器模式的应用
    • 解释器模式的优点
    • 解释器模式的缺点
    • 解释器模式的使用场景

解释器模式

解释器模式Interpreter Pattern

解释器模式就像是一个翻译官,它可以将一种语言(比如我们编写的程序代码或配置文件)翻译成另一种语言(比如计算机可以理解的机器代码)。这种翻译官非常灵活,可以轻松地处理各种复杂的语法和表达式。但是,如果语法规则太多太复杂,翻译官可能会感到头疼,因为他需要记住很多规则,这会让他的工作变得困难。所以,当我们要使用解释器模式时,最好确保语言的文法规则相对简单,这样可以提高翻译官的工作效率。

当有一个语言需要解释执行,并且你可以将该语言中的句子表示为一个抽象语法树(AST)时,可使用解释器模式。

定义

英文原话

The Interpreter pattern specifies a representation for a grammar along with an interpreter that uses the representation to interpret sentences in the grammar.

直译

解释器模式定义了一个文法的表示以及一个解释器,该解释器使用该表示来解释文法中的句子。

解释器模式中的角色

1. 抽象表达式(AbstractExpression)

声明一个抽象的解释操作,这个接口为抽象语法树(AST)中所有节点所共享,为所有的终端表达式和非终端表达式声明一个解释操作。

2. 终端表达式(TerminalExpression)

实现了抽象表达式的解释操作,对应文法中的终结符,即不可再分的表达式。

3. 非终端表达式(NonterminalExpression)

实现了抽象表达式的解释操作,并包含一个或多个对抽象表达式的引用,用于组合文法规则。

4. 环境(Context)

包含解释器之外的一些全局信息,一般是用来传递参数给解释器的。

5. 客户端(Client)

构建抽象语法树(AST)的结构,并调用解释操作来执行相应的功能。

代码示例:算术表达式求值

类图

在这里插入图片描述

代码

以下是一个简单的 Java 示例,它展示了如何使用解释器模式来解析和计算算术表达式(只包括加法和乘法):

package com.polaris.designpattern.list3.behavioral.pattern11.interpreter.demo1;// 抽象表达式
interface Expression {int interpret(Context context);
}// 环境(本例中环境较简单,没有使用)  
class Context {// 这里可以添加一些全局信息,如变量值等  
}// 终端表达式(数字)  
class NumberExpression implements Expression {private int value;public NumberExpression(int value) {this.value = value;}@Overridepublic int interpret(Context context) {return value;}
}// 非终端表达式(加法)  
class AddExpression implements Expression {private Expression left;private Expression right;public AddExpression(Expression left, Expression right) {this.left = left;this.right = right;}@Overridepublic int interpret(Context context) {return left.interpret(context) + right.interpret(context);}
}// 非终端表达式(乘法)  
class MultiplyExpression implements Expression {private Expression left;private Expression right;public MultiplyExpression(Expression left, Expression right) {this.left = left;this.right = right;}@Overridepublic int interpret(Context context) {return left.interpret(context) * right.interpret(context);}
}// 客户端  
public class Client {public static void main(String[] args) {// 构造表达式:(5+10)*2Expression five = new NumberExpression(5);Expression ten = new NumberExpression(10);Expression sum = new AddExpression(five, ten);Expression product = new MultiplyExpression(sum, new NumberExpression(2));// 本例中未使用Context context = new Context();int result = product.interpret(context);// 输出 30System.out.println("Result: " + result);}
}
/* Output:
Result: 30
*///~

在这个例子中,我们定义了一个 Expression 接口作为抽象表达式,NumberExpression 作为终端表达式,表示一个具体的数字值。我们还定义了两个非终端表达式 AddExpressionMultiplyExpression,分别表示加法和乘法操作。客户端负责构建抽象语法树(AST)并调用 interpret 方法来计算表达式的值。注意,在这个例子中我们没有使用 Context 类,因为它在这个简单的示例中并不必要。

解释器模式的应用

解释器模式主要应用于需要处理复杂语法和表达式的场合。以下是一些具体的应用示例:

  1. 表达式求值器:在处理复杂的数学表达式或逻辑表达式时,解释器模式非常有用。开发人员可以定义各种表达式类型的解释器(如加法、减法、乘法、逻辑与、逻辑或等),然后使用这些解释器来解析和计算表达式。
  2. 配置文件解析:当应用程序需要从配置文件中读取参数和设置时,解释器模式可以用来解析配置文件的内容。这可以确保配置文件的格式正确,并且使得应用程序能够轻松地读取和解析配置文件。
  3. 编译器设计:解释器模式在编译器设计中非常常见。编译器需要将源代码(一种人类可读的编程语言)转换为机器代码(计算机可以执行的指令)。解释器模式允许开发人员为每种语言结构定义解释器,这些解释器可以逐一解析源代码,并生成相应的机器代码。

解释器模式的优点

  1. 易于改变和扩展文法:由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。
  2. 实现简单语言方便:每一条文法规则都可以表示为一个类,因此可以方便地实现一个简单的语言。
  3. 增加新的解释表达式方便:如果用户需要增加新的解释表达式,只需要对应增加一个新的终结符表达式或非终结符表达式类,原有表达式类代码无须修改,符合“开闭原则”。

解释器模式的缺点

  1. 对于复杂文法难以维护:如果一个语言包含太多文法规则,类的个数将会急剧增加,导致系统难以管理和维护。
  2. 执行效率较低:由于在解释器模式中使用了大量的循环和递归调用,因此在解释较为复杂的句子时其速度很慢,而且代码的调试过程也比较麻烦。

解释器模式的使用场景

  1. 特定类型问题发生频率足够高:当某个特定类型的问题在系统中频繁出现时,使用解释器模式可以提高代码的可重用性和可维护性。
  2. 语言文法较为简单:当需要解释的语言的文法较为简单时,使用解释器模式可以方便地实现一个解释器。
  3. 执行效率不是关键问题:如果系统的性能瓶颈不在于表达式的解析速度,那么可以使用解释器模式来提高代码的可读性和可维护性。

👈️上一篇:状态模式

设计模式-专栏👈️

http://www.dt0577.cn/news/15173.html

相关文章:

  • 辛集做网站公司网站seo搜索引擎优化怎么做
  • 男女生做羞羞网站在线代理浏览网站
  • 做网站的总要求上门南京百度网站快速优化
  • 中山公司网站制作鹤壁seo公司
  • 网站站开发 流量学电脑办公软件培训班
  • 乐陵森洁新能源有限公司电话seo技术优化整站
  • 凡科网商城充值seo新手快速入门
  • 做会计网站的流程图郑州seo优化外包顾问
  • 智慧旅游网站建设方案怎样注册网站建立网页
  • 深圳大型论坛网站建设百度关键词排名推广话术
  • 模板网站视频上海seo网站优化软件
  • wordpress baidu提交seo算法
  • 兰州网站制作公司100市场监督管理局是干什么的
  • 医疗网站建设行情重庆seo杨洋
  • 建网站如何添加会员模式东莞做网站公司电话
  • 浏阳网页设计快速seo关键词优化技巧
  • 做搜狗pc网站排名搜索引擎营销的英文缩写
  • 视频模板网站网络推广优化平台
  • 网站开发需要掌握技术保定百度推广联系电话
  • 武汉企业做网站找哪家好谷歌搜索引擎363入口
  • 手机美女图片网站模板卢镇seo网站优化排名
  • 做窗帘店的网站关键词有哪些
  • 定制网站开发平台线下推广怎么做
  • 小说网站的阅读界面怎么做的接推广怎么收费
  • 江苏省建设厅网站职称评审系统上海已经开始二次感染了
  • 今科云平台网站建设技术互联网营销平台有哪些
  • 京东那个做快消的网站莆田seo推广公司
  • 模板施工视频seo网站关键词优化哪家好
  • 济南浩辰网站建设公司怎么样百度关键词排名优化
  • 上海模板建站平台百度关键词排名联系