Net设计模式实例之解释器模式(Interpreter Pattern)(1)

简介:

一、解释器模式简介(Brief Intro du ction

解释器模式( Interpreter Pattern ),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。使用了解释器模式,可以很容易地改变和扩展文法,因为该模式使用类来表示文法规则,可以使用继承来改变或扩展该文法。也比较容易实现文法,因为定义抽象语法树中各个节点的类的实现大体类似,这些类容易直接编写。

二、解决的问题(What To Solve

如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子,这样就可以构建一个解释器,该解释器通过解释这些句子来解决问题。

三、解释器模式分析(Analysis

1、解释器模式结构

AbstractExpression 抽象类 :声明一个接口,用于执行一个操作。
TerminalExpression :终结符表达式,实现与文法中的终结符相关的解释操作。
NonterminalExpression :非终结符表达式,为文法中的非终结符实现解释操作。对文法中每一条规则 R1 R2.......RN 都需要一个具体的非终结符表达式类。
Context :包含解释器之外的一些全局信息。

2、源代码

1 、抽象表达式 AbstractExpression
public  abstract class AbstractExpression
{
    public abstract void  Interpret(Context  context);
}
 
2 、终结符表达式 TerminalExpression
public  class TerminalExpression :AbstractExpression
{
    public override void  Interpret(Context  context)
     {
        Console .WriteLine(" 调用终止符表达式Terminal.Interpret()" );
     }
}
 
3 、非终结符表达式 NonterminalExpression
public  class NonterminalExpression :AbstractExpression
{
    public override void  Interpret(Context  context)
     {
        Console .WriteLine(" 调用非终止符表达式 Nonterminal.Interpret()" );
     }
}
 
4 、上下文类 Context
public  class Context
{
}
 
5 、客户端代码
static  void  Ma in (string [] args)
{
    Context  context = new Context ();
    Ar ray List  list = new Ar ray List ();
 
    // 填充语法树
     list.Add(new TerminalExpression ());
     list.Add(new NonterminalExpression ());
     list.Add(new TerminalExpression ());
     list.Add(new TerminalExpression ());
 
    // 解析
    foreach  (AbstractExpression  abstractExpression in  list)
     {
         abstractExpression.Interpret(context);
     }
    Console .ReadKey();
}

3、程序运行结果









本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/273753,如需转载请自行联系原作者

目录
相关文章
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
676 26
|
设计模式 Java 编译器
【设计模式】【行为型模式】解释器模式(Interpreter)
一、入门 什么是解释器模式? 解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义语言的语法表示,并提供一个解释器来处理该语法。它通常用于需要解释和执行特定语言或表达式的场
309 11
|
设计模式 SQL Java
【再谈设计模式】解释器模式~语法的解析执行者
解释器模式定义了一种语言的语法表示,并定义一个解释器来解释该语言中的句子。它使用类来表示每个语法规则,并且通过递归调用这些类的方法来解释表达式。本质上,它将一个复杂的表达式分解为一系列简单的部分,然后按照特定的语法规则进行解析和执行。
422 8
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
设计模式 存储 缓存
Java设计模式 - 解释器模式(24)
Java设计模式 - 解释器模式(24)
236 1
|
设计模式
设计模式-05建造者模式(Builder Pattern)
设计模式-05建造者模式(Builder Pattern)
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
775 5
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
482 7