二十一 设计模式之解释器模式
来源:互联网 发布:qsv格式转换软件 编辑:程序博客网 时间:2024/05/18 02:23
定义 给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表
示来解释语言中的句子
类图
通用代码
//抽象表达式
public abstract class AbstractExpression {
public abstract Object Interpret(Context ctx);
}
//终结符表达式
public class TerminalExpression extends AbstractExpression {
@Override
public Object Interpret(Context ctx) {
return null;
}
}
//非终结符表达式
public class NonterminalExpression extends AbstractExpression {
public NonterminalExpression(AbstractExpression...expression){
}
@Override
public Object Interpret(Context ctx) {
// TODO Auto-generated method stub
return null;
}
}
客户类
public class Client {
public static void main(String args[]){
Context ctx = new Context();
//通常定义一个具体的表达式,通常为ListArray,LinkedList,Stack等类型
Stack<AbstractExpression> stack = null;
/*
for( ; ;){
语法判断,并产生递归调用
}
*/
AbstractExpression exp = stack.pop();
exp.Interpret(ctx);
//具体元素进入场景
}
}
优点
扩展性好,修改语法规则只要修改相应的非终结符表达式就可以了
缺点
容易引起类膨胀。每个语法都要产生一个非终结符表达式
采用递归方法,不易调试
效率问题。大量使用了循环和递归
注意事项
解释器模式一般用来解析比较标准的字符集,如SQL语法分析等
- 二十一 设计模式之解释器模式
- 设计模式(二十一)---解释器模式
- C++设计模式之二十一--Mediator中介者模式、Interpreter解释器模式、Flyweight享元模式、Memento备忘录模式
- 设计模式之(二十)解释器模式Interpreter
- 设计模式之二十三:解释器模式
- 二十三种设计模式之解释器模式
- (二十四)Java设计模式之解释器模式
- 设计模式(二十一)之 Visitor
- 设计模式之(二十一)模板模式(template)
- 设计模式之(二十一)访问者模式Visitor
- C++设计模式之二十一:Strategy(策略模式)
- Java设计模式之二十一(模版模式)
- 设计模式之二十一:中介者模式(Mediator)
- 行为型:设计模式之迭代器模式(二十一)
- (二十一)Java设计模式之备忘录模式
- 设计模式之解释器
- 二十三种设计模式之行为型模式之解释器模式
- 设计模式之Interpreter解释器模式
- 二十 设计模式之状态模式
- Windows XP 上 KB977377导致证书不可用问题
- Fedora如何删除旧内核?
- (spring2.x整合)applicationContext-dao.xml
- CUDA实现平衡树求前缀和
- 二十一 设计模式之解释器模式
- Android字符串资源及其格式化
- 二十二 设计模式之享元模式
- 堪称一绝的“IO口扫键”法
- AutoCAD .NET API基础(一) AutoCAD 对象层次结构(3)
- 【转】19 个漂亮的 jQuery 画廊和幻灯片插件
- 二十三 设计模式之桥梁模式
- asp.net(C#)中的flash怎么添加在加载时不能显示出来--解决
- 动态代理工厂