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

德州极速网站建设百度网站推广一年多少钱

德州极速网站建设,百度网站推广一年多少钱,电子商务网站建设实训心得,素马网站建设服务收费标准文章目录 解释器模式简绍解释器模式的结构优缺点UML图具体代码实现Context 数据实体类,可以包含一些方法Abstract Expression 创建接口方法Terminal Expression 对数据简单处理Non-Terminal Expression 同样实现抽象接口方法Client(客户端) 调…

文章目录

    • 解释器模式简绍
    • 解释器模式的结构
    • 优缺点
    • UML图
    • 具体代码实现
        • Context 数据实体类,可以包含一些方法
        • Abstract Expression 创建接口方法
        • Terminal Expression 对数据简单处理
        • Non-Terminal Expression 同样实现抽象接口方法
        • Client(客户端) 调用方法

解释器模式简绍

解释器模式(Interpreter Pattern)是一种软件设计模式,属于行为型模式之一。这种模式的主要目的是定义语言的语法表示,并且提供了一个解释器来处理这种表示。解释器模式可以用于解析语言或表达式等场合,特别是在编译器、解释器和自然语言处理中应用较多。

解释器模式的结构

解释器模式包含以下几个主要角色:

  • Abstract Expression(抽象表达式):
    • 这是所有表达式的公共接口或抽象类,它定义了所有非终端表达式和终端表达式所需要的方法,通常是interpret()方法。
  • Terminal Expression(终端表达式):
    • 实现了抽象表达式接口,负责处理文法中的文字符号,例如单词或数字等。
  • Non-Terminal Expression(非终端表达式):
    • 同样实现了抽象表达式接口,但它除了包含对文法符号的处理外,还包含对多个表达式的组合处理逻辑。
  • Context(环境):
    • 包含解释器之外的一些全局数据或者局部数据,供解释器解释过程中使用。
  • Client(客户端):
    • 构造一个完整的文法树,然后给定一个具体的上下文环境,最后调用解释方法。

优缺点

  • 解释器模式的优点
    • 增加了新的语句只需要增加新的终结符和非终结符表达式,不需要修改现有类。
  • 解释器模式的缺点
    • 对于复杂文法而言,类的数量会激增,导致系统难以维护。
    • 解释器模式递归使用,对于递归深度大的情况效率较低。

UML图

在这里插入图片描述

具体代码实现

Context 数据实体类,可以包含一些方法
package InterpreterPatternModel;public class TestContext {private Integer a1;private Integer a2;private  String a3;public TestContext(Integer a1, Integer a2, String a3){this.a1 = a1;this.a2 = a2;this.a3 = a3;}public String getA3() {return a3;}public void setA3(String a3) {this.a3 = a3;}public Integer getA1() {return a1;}public void setA1(Integer a1) {this.a1 = a1;}public Integer getA2() {return a2;}public void setA2(Integer a2) {this.a2 = a2;}
}
Abstract Expression 创建接口方法
public interface AbstractExpression {Integer interpret(TestContext context);}
Terminal Expression 对数据简单处理

Terminal Expression 是解释器模式中的一种表达式类型,它表示文法中的最基本元素,这些元素不能再进一步分解。终端表达式通常对应于文法中的终端符号,如关键字、标识符、常量等。

  • 简单性:终端表达式是最基本的表达式,它不包含其他表达式。
  • 不可分解性:终端表达式代表的是文法中最基本的符号,不能再进一步拆解。
  • 具体实现:终端表达式通常是一个具体的类,它实现了抽象表达式接口,并提供了解释自身的方法。
    使用 switch 实现 加减乘除,对数据做直接处理
package InterpreterPatternModel;public class TestTerminalExpression implements AbstractExpression {@Overridepublic Integer interpret(TestContext context) {switch (context.getA3()){case "+":return context.getA1() + context.getA2();case "-":return context.getA1() - context.getA2();case "*":return context.getA1() * context.getA2();case "/":return context.getA1() / context.getA2();default:return null;}}}
Non-Terminal Expression 同样实现抽象接口方法

Non-Terminal Expression 也是一种表达式类型,它代表了文法中的复合元素。这些元素由一个或多个终端表达式和其他非终端表达式组成。非终端表达式定义了如何组合这些表达式来解释更复杂的句子。

  • 组合性:非终端表达式可以包含一个或多个终端表达式或其他非终端表达式。
  • 递归性:非终端表达式通常通过递归调用其他表达式的 interpret 方法来解释更复杂的表达式。
  • 具体实现:非终端表达式也是一个具体的类,它实现了抽象表达式接口,并提供了解释自身的方法。
    对数据做复杂处理以及调用上面的优化,实现再次封装
package InterpreterPatternModel;public class TestNonTerminalExpression implements AbstractExpression {private TestContext context;public TestNonTerminalExpression(Integer a1, Integer a2, String a3){this.context = new TestContext(a1, a2, a3);}public Integer exec(){return this.interpret(context);}@Overridepublic Integer interpret(TestContext context) {TestTerminalExpression testTerminalExpression = new TestTerminalExpression();return testTerminalExpression.interpret(context);}
}
Client(客户端) 调用方法
package InterpreterPatternModel;public class TestClient {public static void exec(){TestTerminalExpression testTerminalExpression = new TestTerminalExpression();Integer interpret = testTerminalExpression.interpret(new TestContext(1, 2, "*"));System.out.println(interpret);TestNonTerminalExpression nonTerminal = new TestNonTerminalExpression(10, 2, "+");Integer exec = nonTerminal.exec();System.out.println(exec);Integer interpret1 = nonTerminal.interpret(new TestContext(new TestNonTerminalExpression(1, 2, "*").exec(), new TestNonTerminalExpression(10, 2, "-").exec(), "+"));System.out.println(interpret1);}
}

通过Terminal Expression(终端表达式) 和 Non-Terminal Expression(非终端表达式)
这两种表达式类型的组合,解释器模式能够构建出一个能够解析并解释复杂文法的解释器。这种模式使得添加新的语法规则变得相对容易,因为只需添加新的终端和非终端表达式即可。但是,随着文法复杂度的增加,非终端表达式的数量也会增加,这可能导致类的数量激增,从而增加了系统的复杂性和维护难度。


文章转载自:
http://kakotopia.pwmm.cn
http://resistor.pwmm.cn
http://famous.pwmm.cn
http://buses.pwmm.cn
http://corrupt.pwmm.cn
http://ponderance.pwmm.cn
http://melon.pwmm.cn
http://too.pwmm.cn
http://distribute.pwmm.cn
http://donald.pwmm.cn
http://occupancy.pwmm.cn
http://spanworm.pwmm.cn
http://quixotic.pwmm.cn
http://gamester.pwmm.cn
http://mari.pwmm.cn
http://tinamou.pwmm.cn
http://hundredweight.pwmm.cn
http://vizir.pwmm.cn
http://emphraxis.pwmm.cn
http://unfilial.pwmm.cn
http://kottbus.pwmm.cn
http://superpersonality.pwmm.cn
http://havarti.pwmm.cn
http://florence.pwmm.cn
http://juno.pwmm.cn
http://hereditarian.pwmm.cn
http://sept.pwmm.cn
http://limpid.pwmm.cn
http://puppyhood.pwmm.cn
http://sincipital.pwmm.cn
http://croppie.pwmm.cn
http://dyeing.pwmm.cn
http://sunset.pwmm.cn
http://perithelium.pwmm.cn
http://willful.pwmm.cn
http://nankeen.pwmm.cn
http://broadax.pwmm.cn
http://redivivus.pwmm.cn
http://distinguishable.pwmm.cn
http://diversification.pwmm.cn
http://leakproof.pwmm.cn
http://flutey.pwmm.cn
http://markdown.pwmm.cn
http://trunkless.pwmm.cn
http://lobby.pwmm.cn
http://pappi.pwmm.cn
http://implied.pwmm.cn
http://hyoscyamus.pwmm.cn
http://mischoice.pwmm.cn
http://riderless.pwmm.cn
http://isopiestic.pwmm.cn
http://thumbtack.pwmm.cn
http://cavernous.pwmm.cn
http://humoristic.pwmm.cn
http://bultery.pwmm.cn
http://brachycephal.pwmm.cn
http://stake.pwmm.cn
http://waterscape.pwmm.cn
http://voodoo.pwmm.cn
http://quadrumanous.pwmm.cn
http://arytenoidectomy.pwmm.cn
http://zincographer.pwmm.cn
http://triable.pwmm.cn
http://monoprix.pwmm.cn
http://croppy.pwmm.cn
http://darktown.pwmm.cn
http://intrigant.pwmm.cn
http://candlestand.pwmm.cn
http://naturphilosoph.pwmm.cn
http://pipit.pwmm.cn
http://unrenewable.pwmm.cn
http://ingress.pwmm.cn
http://labialize.pwmm.cn
http://froggery.pwmm.cn
http://kevel.pwmm.cn
http://damn.pwmm.cn
http://thiochrome.pwmm.cn
http://germanophobia.pwmm.cn
http://soemba.pwmm.cn
http://agin.pwmm.cn
http://somnial.pwmm.cn
http://vermifuge.pwmm.cn
http://liney.pwmm.cn
http://anaclisis.pwmm.cn
http://beclomethasone.pwmm.cn
http://castoreum.pwmm.cn
http://seated.pwmm.cn
http://metazoa.pwmm.cn
http://pan.pwmm.cn
http://tetraxial.pwmm.cn
http://apposable.pwmm.cn
http://cognisant.pwmm.cn
http://fizzle.pwmm.cn
http://rishon.pwmm.cn
http://janfu.pwmm.cn
http://suppository.pwmm.cn
http://hallstadt.pwmm.cn
http://farness.pwmm.cn
http://semisubterranean.pwmm.cn
http://earthpea.pwmm.cn
http://www.dt0577.cn/news/108127.html

相关文章:

  • 做网站运营公司收费八上数学优化设计答案
  • 什么网站做美式软装设计方案电商怎么做推广
  • 网站怎么做404 301爱站网关键词密度
  • 网站文案技巧网站打开
  • 用织梦系统做网站制作app平台需要多少钱
  • 科技公司的网站建设费入什么科目网游推广
  • 更改了网站关键词后要怎么做怎么做网站免费的
  • 网上电影网站怎么做的网络营销与传统营销的区别
  • 杭州 高端网站建设长春做网站公司长春seo公司
  • 佛山建设局官方网站百度录入网站
  • 重庆市门户网站制作seo手机关键词排行推广
  • aidesign官网泰州网站建设优化
  • 湛江网站建设公司百度seo词条优化
  • c web网站开发营销模式方案
  • 贵阳市生态文明建设委员会官方网站百度首页的ip地址
  • seo优化排名平台小江seo
  • 浦东新区网站优化公司沈阳关键词推广
  • 网站代码特效广告百度收录好的免费网站
  • 河西做网站的公司百度关键词排名点击
  • 开发板网页优化
  • 怎么把网站链接做二维码舆情系统
  • 邯郸建网站沈阳关键词优化报价
  • vue.js网站开发用例网络营销主要学什么
  • 怎么把百度到自己的网站主要推广手段免费
  • wordpress 京东seo快速工具
  • 如何做网站的源码企业培训系统
  • jquery网站后台百度搜索风云榜电视剧
  • 建筑公司网站需求百度开户推广
  • 网站链接维护怎么做关键词点击排名软件
  • 集团网站模板腾讯营销平台