适配器模式之解释器模式
设计模式目录
http://blog.csdn.net/fenglailea/article/details/52733435
风.fox
解释器模式 Interpreter Pattern
给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子
通用类图
组成
- 抽象解释器 AbstractExpression
具体的解释任务由各个实现类完成,具体的解释器分别由TerminalExpression和NonterminalExpression完成。 - 终结符表达式 TerminalExpression
实现与文法中的元素相关联的解释操作,通常一个解释器模式中只有一个终结符表达式,但有多个实例,对应不同的终结符。具体到我们例子就是VarExpression类,表达式中的每个终结符都在堆栈中产生了一个VarExpression对象。 - 非终结符表达式 NonterminalExpression
文法中的每条规则对应于一个非终结表达式,具体到我们的例子就是加减法规则分别对应到AddExpression和SubExpression两个类。非终结符表达式根据逻辑的复杂程度而增加,原则上每个文法规则都对应一个非终结符表达式。 - 环境角色 Context
通用源码
JAVA
//抽象表达式
public abstract class Expression {//每个表达式必须有一个解析任务public abstract Object interpreter(Context ctx);
}
//终结符表达式
public class TerminalExpression extends Expression[//通常终结符表达式只有一个,但是有多个对象public Object interpreter(Context ctx){return null;}
}
//非终结符表达式
public class NonterminalExpression extends Expression[//每个终结符表达式都会对其他表达式产生依赖public NonterminalExpression(Expression... expression){}public Object interpreter(Context ctx){//进行文法处理return null;}
}
//场景
public class Client{public static void main(String[] arg){Context ctx = new Context();//通常定义一个语法容器,容纳一个具体的表达式,通常为ListArray,LinkedList,Stack等等Stack&Expression>stack =null;for(;;){.....}//产生一个完整的语法树,由各个具体的语法分析进行解析Expression exp=stack.pop();//具体元素进入场景exp.interpreter(ctx);}
}
使用场景
重复发生的问题
一个简单语法需要解释的场景
适配器模式之解释器模式相关推荐
- 设计模式之解释器模式(Interpreter)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- Java设计模式之行为型:解释器模式
一.什么是解释器模式: 解释器模式,就是定义语言的文法,并建立一个解释器来解释该语言中的句子,通过构建解释器,解决某一频繁发生的特定类型问题实例. 这里我们将语言理解成使用规定格式和语 ...
- 【白话设计模式二十二】解释器模式(Interpreter)
为什么80%的码农都做不了架构师?>>> #0 系列目录# 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二] ...
- java设计模式适配器模式_Java解释器设计模式
java设计模式适配器模式 Interpreter design pattern is one of the behavioral design pattern. Interpreter patter ...
- 图解Java设计模式学习笔记——行为型模式(模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式)
一.模板方法模式(模板模式)--钩子方法 1.需求-豆浆制作问题 编写制作豆浆的程序,说明如下: 制作豆浆的流程选材-->添加配料-->浸泡-->放到豆浆机打碎. 通过添加不同的配料 ...
- 【设计模式】--解释器模式
四则运算 通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求 先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复 在分别输入a ,b, c, d, e 的值 最后求出结 ...
- 设计模式之观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式
前言 这是设计模式的最后一章,包含了剩余的 行为型模式 中的 观察者模式.中介者模式.迭代器模式.访问者模式.备忘录模式.解释器模式 系列文章 第一章:7种设计原则之单一职责原则.接口隔离原则.依赖倒 ...
- 设计模式之解释器模式
解释器模式字面意思,也即解释某些内容的含义.这种设计模式是实际开发中最不容易用到的.比如SQL解析,符号处理引擎,会用到解释器模式,属于更底层的开发人员才会用到的设计模式. 本文就以解释器模式的概念. ...
- 【设计模式】解释器模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
文章目录 一.解释器模式简介 二.解释器模式适用场景 三.解释器模式优缺点 四.解释器模式与适配器模式 五.解释器模式代码示例 1.解释器接口 2.加法解释器 3.乘法解释器 4.整型解释器 5.语法 ...
- 【每天一个java设计模式(十四)】 - 解释器模式
解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式.这种模式实现了一个表达式接口,该接口解释一个特定的上下文. 解释器模式主要包括以下几个部分: 抽象表达式角色:定义解释器的接口,约定解释 ...
最新文章
- Jpeg解码小结(一)
- s7-200与计算机modbus通讯案例,【案例】S7-200SMART MODBUS通信介绍与实例编程
- powershell共享服务器写文件,Windows PowerShell:共享您的脚本 - 轻松实现
- oracle sql语句大全
- shell 进入hadoop_Hadoop关于HDFS的基本操作(Shell命令)
- springboot整合curator实现分布式锁
- 龙芯ejtag 单步调试pmon
- Linux中jemalloc的安装与使用
- {dede-list flag='h'}DedeCMS支持flag标签解决办法
- x86 x64 x86_64 AMD64 区别
- uni-app:搜索关键词并高亮显示,可重复显示
- 强制横屏java_Android强制设定横屏时,SurfaceView一直黑屏
- 仙剑奇侠传3 全开注册表改法
- 基于STM32设计的UNO卡牌游戏(双人、多人对战)
- 康考迪亚大学获560万加元捐赠以鼓励创造力,是魁北克美术学院有史以来最大一笔捐赠
- java丧尸危机全城爆发_伤尸危机-全城爆发BT版
- RNA-seq 详细教程:分析流程介绍(1)
- 华为:交付服务体系怎么提升一线作业人员的工作体验?
- codeSourcery 交叉编译环境搭建
- 尚硅谷在线教育五:尚硅谷在线教育讲师管理开发
热门文章
- 只上传APK而不进行反编译,在服务器集成第三方SDK。是如何实现的
- git clone权限被拒绝
- editplus3编辑器颜色修改
- was如何使用gzip_一文详解前端Node原生模块zlib,开启gzip压缩让页面响应速度更快...
- 拓端tecdat|R语言近似贝叶斯计算MCMC(ABC-MCMC)轨迹图和边缘图可视化
- 拓端tecdat:R语言KMEANS均值聚类和层次聚类:亚洲国家地区生活幸福质量异同可视化分析和选择最优聚类数
- 拓端tecdat|数据类岗位需求的数据面
- 操作系统-管程、进程和线程之间的差别
- pythonint函数的参数_pythonint函数怎么用
- Ubuntu下yolov4训练自己的数据集