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

玉树网站建设万网做网站

玉树网站建设,万网做网站,做h的小说网站,湛江在线网行为型设计模式之Interpreter(解释器) 前言: 自己的话理解:自定义一个解释器用来校验参数或数据是否合法。 1)意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解…

行为型设计模式之Interpreter(解释器)

前言:
自己的话理解:自定义一个解释器用来校验参数或数据是否合法。

1)意图

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语音中的句子。

2)结构

在这里插入图片描述

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;/*** @author psd 行为设计模式之解释器模式*/
public class InterpreterPattern {public static void main(String[] args) {Context context = new Context();context.check("江苏的南京");context.check("南京的一哥");context.check("南京的芜湖");context.check("安徽的合肥");System.out.println("------------");context.check("合肥的马鞍山");}
}/*** 表达式接口*/
interface Expression {/*** 解释器 判断是否合法* * @param context*            文本信息* @return 是否合法*/boolean interpret(String context);
}class Context{private String[] prefixArr = {"江苏","安徽","南京"};private String[] suffixArr = {"南京","苏州","合肥","马鞍山","芜湖", "|州","一哥","马鞍山"};private NonterminalExpression nonterminalExpression;public Context() {TerminalExpression presix = new TerminalExpression(prefixArr);TerminalExpression suffix = new TerminalExpression(suffixArr);nonterminalExpression = new NonterminalExpression(presix,  suffix);}public void check(String info) {boolean result = nonterminalExpression.interpret(info);if (result) {System.out.println("识别成功.....");} else {System.out.println("识别失败.....");}}
}/*** 非终端表达式*/
class NonterminalExpression implements Expression {private TerminalExpression presix;private TerminalExpression suffix;public NonterminalExpression(TerminalExpression presix, TerminalExpression suffix) {this.presix = presix;this.suffix = suffix;}@Overridepublic boolean interpret(String context) {String[] splitStr = context.split("的");// 判断前缀和后缀是否合法return presix.interpret(splitStr[0]) && suffix.interpret(splitStr[1]);}
}/*** 终端表达式*/
class TerminalExpression implements Expression {private Set<String> set = new HashSet<>();public TerminalExpression(String[] data) {Collections.addAll(set, data);}/*** 判断是否合法* * @param context*            文本信息* @return 是否合法*/@Overridepublic boolean interpret(String context) {return set.contains(context);}
}

3)适用性

Interpreter模式适用于当有一个语言需要解释执行,并且可将该语言中的句子表示为一个抽
象语法树时,以下情况效果最好:

  • 该文法简单。对于复杂的发文,文法的类层次变得庞大而无法管理。
  • 效率不是一个关键问题。最高效的解释器通常不是通过直接解释语法分析树实现的,
    而是首先将它们转换成另一种形式。

总结:何时选择解释器模式
场景特征 例子
需解析领域特定语言(DSL) 金融公式、业务规则表达式
频繁处理结构化查询/过滤条件 自定义日志过滤器、数据查询
简单语法且变化不频繁 数学表达式、布尔逻辑解析
动态执行用户定义的规则 游戏AI条件、促销活动规则引擎

喜欢我的文章记得点个在看,或者点赞,持续更新中ing…


文章转载自:

http://HP4EYLme.kpnpd.cn
http://5ntFaLe6.kpnpd.cn
http://S1jKzx6s.kpnpd.cn
http://bdcyuCP5.kpnpd.cn
http://QGtdPS9I.kpnpd.cn
http://zoEaAdTQ.kpnpd.cn
http://2zM24dwI.kpnpd.cn
http://9tw0BKjx.kpnpd.cn
http://xpE6zF6V.kpnpd.cn
http://fq3eiXJs.kpnpd.cn
http://Zv6iOL34.kpnpd.cn
http://aiFMNZxa.kpnpd.cn
http://rkPkneET.kpnpd.cn
http://72BDECIA.kpnpd.cn
http://qQXnn1k5.kpnpd.cn
http://zTbGdqmp.kpnpd.cn
http://DZbIr2sG.kpnpd.cn
http://ekCLBzy9.kpnpd.cn
http://8GLSO3u7.kpnpd.cn
http://6Vm1JmRO.kpnpd.cn
http://lRUfs9Cl.kpnpd.cn
http://oob20lIV.kpnpd.cn
http://d8xz9hy7.kpnpd.cn
http://iIUB3989.kpnpd.cn
http://xUNDnCVG.kpnpd.cn
http://uiOQaPWd.kpnpd.cn
http://y7PsXIgg.kpnpd.cn
http://qbAs95oi.kpnpd.cn
http://ydCmyk1m.kpnpd.cn
http://XmTaC7F2.kpnpd.cn
http://www.dtcms.com/wzjs/627740.html

相关文章:

  • wordpress动态页面天津百度快速排名优化
  • 鲜花店的网站建设企业邮箱怎么更改用户名
  • 团购网站营销方案芜湖网站建设电话
  • 做网站不推广网站建设学什么好
  • 网站建设前景分析天津移动网站设计
  • wordpress 添加证书整站seo排名要多少钱
  • 天津优化网站扬州新闻头条最新消息
  • 网站的结构设计网站建设的经验
  • 西安网站网站建设微信微网站是什么案例
  • wordpress子站共享用户大型网站开发框架有哪些
  • 做加盟的网站建设vi设计公司排行
  • 在线服装设计网站如何选择网站建设平台
  • 工业设计的网站荣耀手机官方网站
  • 做微网站哪家好商业策划书范文6篇
  • 中国产品网免费网站抖音seo优化
  • 前端个人网站怎么做网站空间在线解压
  • 好网站建设公司哪家好网推所
  • 做网站被骗五千多wordpress多久学会
  • 常州网站建设平台wordpress域名换了打不开
  • asp.net 网站 价格职业培训机构管理系统
  • 网站建设課程网站素材资源
  • 青海网站建设加q5299丶14602做词桂林市区有什么好玩的地方景点
  • 怎么查百度收录网站吗一分钟新闻口播稿
  • 关于江西建设监督网网站迁移长沙网站建设外贸
  • 网站开发售后工作装修公司展厅布置方案
  • 做农产品的网站做业务网站
  • 关于网页制作的网站设计制作小车教学视频
  • 帝国 cms 网站关键字摄影设计说明模板
  • 民宿网站建设企查查企业信息查询手机版下载
  • 鹤壁企业网站建设做电商如何推广