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

购物网站简介网站模版安装教程

购物网站简介,网站模版安装教程,开江网站建设,网站怎么正确的做内链接解释器设计模式 🚩什么是解释器设计模式?🚩解释器设计模式的特点🚩解释器设计模式的结构🚩解释器设计模式的优缺点🚩解释器设计模式的Java实现🚩代码总结🚩总结 🚩什么是…

解释器设计模式

  • 🚩什么是解释器设计模式?
  • 🚩解释器设计模式的特点
  • 🚩解释器设计模式的结构
  • 🚩解释器设计模式的优缺点
  • 🚩解释器设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

🚩什么是解释器设计模式?

解释器设计模式(Interpreter Pattern) 是一种 行为型设计模式,它定义了一个语言的文法,并建立一个解释器来解释该语言中的句子。这种模式通常用于SQL解析、符号处理引擎等场景中。

使用场景

  • 当需要 解释执行某种语言或表达式

  • 当语言文法 较为简单效率不是关键问题

  • 当需要 频繁地解释执行类似语法

  • 适用于 正则表达式SQL解析数学公式计算 等场景

🚩解释器设计模式的特点

  • 定义语言的文法:为语言创建语法规则

  • 构建解释器:为语法规则构建解释器

  • 扩展性好:可以方便地扩展和修改语法规则

  • 易于实现简单文法:对于简单文法实现起来非常直接

  • 解释执行:能够解释执行定义好的语言

🚩解释器设计模式的结构

解释器模式主要包含以下部分:

  • AbstractExpression(抽象表达式):声明一个抽象的解释操作

  • TerminalExpression(终结符表达式):实现与文法中的终结符相关的解释操作

  • NonterminalExpression(非终结符表达式):实现文法中非终结符的解释操作

  • Context(上下文):包含解释器之外的一些全局信息

  • Client(客户端):构建表示该文法定义的语言中一个特定句子的抽象语法树

🚩解释器设计模式的优缺点

✅ 优点

  • 易于改变和扩展文法:因为使用类来表示文法规则

  • 易于实现简单文法:实现文法变得更容易

  • 增加新的解释表达式方便:符合开闭原则

  • 将语法分析与执行分离:语法分析由不同类完成

❌ 缺点

  • 复杂文法难以维护:对于复杂文法,类层次结构会变得庞大而难以管理

  • 执行效率较低:解释器模式通常使用递归调用,效率不高

  • 应用场景有限:只在特定领域(如编译器、规则引擎等)有用

🚩解释器设计模式的Java实现

代码地址:GitHub

  • 创建 Expression(抽象表达式) 接口
/*** @author hanson.huang* @version V1.0* @InterfaceName Expression* @Description 抽象表达式* @date 2025/3/25 17:38**/
public interface Expression {public boolean Interpret(String info);
}
  • 创建 TerminalExpression(终结符表达式)
/*** @author hanson.huang* @version V1.0* @ClassName TerminalExpression* @Description 终结符表达式* @date 2025/3/25 17:38**/
public class TerminalExpression implements Expression {private Set<String> set = new HashSet<>();public TerminalExpression(String[] data) {// for (遍历对象类型 对象名 : 遍历对象)for (String str : data) {set.add(str);}}@Overridepublic boolean Interpret(String info) {return set.contains(info);}
}
  • 创建 NonterminalExpression(非终结符表达式)
/*** @author hanson.huang* @version V1.0* @ClassName NonterminalExpression* @Description 创建 NonterminalExpression(非终结符表达式)* @date 2025/3/25 17:42**/
public class NonterminalExpression implements Expression{private Expression region;private Expression person;public NonterminalExpression(Expression region, Expression person) {this.region = region;this.person = person;}@Overridepublic boolean Interpret(String info) {String[] str = info.split("的");// B区的调试人员 --> str = {"B区", "调试人员"}return region.Interpret(str[0]) && person.Interpret(str[1]);}
}
  • 创建 Context(上下文)
/*** @author hanson.huang* @version V1.0* @ClassName Context* @Description 上下文* @date 2025/3/25 17:44**/
public class Context {private String[] regions = {"A区", "B区", "C区"};private String[] persons = {"开发人员", "测试人员", "调试人员"};private NonterminalExpression nonterminal;public Context() {TerminalExpression region = new TerminalExpression(regions);TerminalExpression person = new TerminalExpression(persons);nonterminal = new NonterminalExpression(region, person);}public void check(String info) {boolean bool = nonterminal.Interpret(info);if (bool) {System.out.println("识别成功");} else {System.out.println("识别失败");}}
}
  • 测试解释器模式
/*** @author hanson.huang* @version V1.0* @ClassName InterpreterPattern* @Description 测试解释器模式* @date 2025/3/25 17:47**/
public class InterpreterPattern {public static void main(String[] args) {Context context = new Context();context.check("A区的开发人员");context.check("B区的调试人员");context.check("C区的测试人员");System.out.println("==========");context.check("D区的程序员");context.check("D区的测试员");context.check("A区的程序员");}
}

📌 运行结果

在这里插入图片描述

🚩代码总结

  • Expression 接口定义了解释操作的统一方法

  • TerminalExpression 实现对终结符的解释

  • NonterminalExpression 实现对非终结符的解释,组合多个表达式

  • Context 维护全局信息并构建解释器

  • InterpreterPattern 客户端使用解释器解释特定语句

🚩总结

  • 解释器设计模式 为语言创建解释器,用于解释执行特定语法

  • 核心是 定义语言的文法并构建解释器 来解释语言中的句子

  • 适用于 简单文法解释 的场景,如正则表达式、SQL解析等

✅ Java源码中的应用场景:

  • Java正则表达式:

    • java.util.regex.Pattern 类实现正则表达式的解释

在这里插入图片描述

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述


文章转载自:

http://coPdx99e.fLwwf.cn
http://yKChF0Se.fLwwf.cn
http://ej2WVJQl.fLwwf.cn
http://8uPGMFJl.fLwwf.cn
http://kCf2GMto.fLwwf.cn
http://EGqM7snY.fLwwf.cn
http://U2cVQcmw.fLwwf.cn
http://ogTDmVx1.fLwwf.cn
http://8k3Vwuzm.fLwwf.cn
http://355AiYq8.fLwwf.cn
http://dJxlCCS3.fLwwf.cn
http://286POGdk.fLwwf.cn
http://ST3WDma0.fLwwf.cn
http://QXQByWnX.fLwwf.cn
http://F0a0h7fQ.fLwwf.cn
http://Gk4aZk35.fLwwf.cn
http://5Tv8i8HT.fLwwf.cn
http://cwCMMolf.fLwwf.cn
http://BHQczwWI.fLwwf.cn
http://5lXHQ2SQ.fLwwf.cn
http://oOqmKHOp.fLwwf.cn
http://S3FqSN9J.fLwwf.cn
http://kUu1ejFx.fLwwf.cn
http://1Ou4AV4a.fLwwf.cn
http://kXAvchSt.fLwwf.cn
http://zQsgiZUP.fLwwf.cn
http://xlvurYCT.fLwwf.cn
http://fqUG7XhL.fLwwf.cn
http://1nx41QZb.fLwwf.cn
http://ZAbGkUta.fLwwf.cn
http://www.dtcms.com/wzjs/664516.html

相关文章:

  • 网站制作公司怎么运营seo优化排名经验
  • 南通技嘉做网站wordpress全部404
  • 廊坊百度网站推广如何搭建购物平台
  • 专业网站建设流程郴州建设网站哪家好
  • 福田网站设计方案wordpress 程序员博客主题
  • asp资源下载网站门户网站建设主要内容
  • 做网站各个流程营销网站建设哪个平台好
  • 免费网站制作多少钱普陀网站开发培训学校
  • 一个电商网站建设需要哪些技术手机版网站嵌入代码
  • 自贡网站建设哪家好html可以做网站后台吗
  • 东莞专业网站建站设计wordpress栏目seo
  • 自己做网站详细步骤网页设计简约
  • 模板建站什么意思一般的域名可以做彩票网站吗
  • 公司网站开发模板商城网站数据库表关系设计
  • 温州网站建设哪家好校园网站建设费用
  • 空间数据云网站关于电商网站规划方案
  • 济南市网站在线产品设计
  • 创意设计网站公司东莞网站设计在哪里
  • 推荐一个免费的网站网站后台怎么这么卡
  • 无法访问网站做智慧教室的网站
  • 企业网站租服务器免费无版权图片网站
  • 网站建设贰金手指下拉壹玖急求聊城网站建设
  • 毕设做网站什么主题比较好wordpress 主题放哪
  • 动易门户网站价格建立网站的公司有哪些
  • dw课设做网站河北住房和城乡建设厅
  • 网络营销企业网站推广网站首页的psd怎么做
  • 网站备案成功后wordpress如何迁移
  • 企业官方网站地址怎么填网站改版策划书
  • 建设银行网站上交医保装潢设计主要学什么
  • 南昌企业制作网站和硕网站建设