解释器模式(Interpreter Pattern)
- 格式:doc
- 大小:339.50 KB
- 文档页数:10
一、创建型模式 (1)∙工厂方法(FactoryMethod) (1)∙抽象工厂(AbstractFactory) (2)∙建造者(Builder) (2)∙单例模式(Singleton) (3)∙原型模式(Prototype) (3)二、结构型模式 (3)∙适配器模式(Adapter) (3)∙桥接模式(Bridge) (4)∙组合模式(Compsite) (4)∙装饰模式(Decorator) (5)∙外观模式(Facade) (5)∙享元模式(Flyweight) (6)∙代理模式(Proxy) (6)二、行为型模式 (7)∙责任链模式(Chain Of Responsibility) (7)∙命令模式(Command) (7)∙解释器模式(Interpreter) (8)∙迭代器模式(Iterator) (8)∙中介者模式(Mediator) (9)∙备忘录模式(Memento) (10)∙观察者模式(Observer) (10)∙状态模式(State) (10)∙策略模式(Strategy) (11)∙模板方法(TemplateMethod) (11)∙访问者模式(Visitor) (12)一、创建型模式∙工厂方法(FactoryMethod)定义一个用于创建对象的接口,让子类决定实例化哪一个类。
FactoryMethod使一个类的实例化延迟到其子类。
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
二、结构型模式∙适配器模式(Adapter)将一个类的接口转换成客户希望的另外一个接口。
Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
Interpreter模式实现详解Interpreter模式是指通过一种特定的语法规则来实现对某种语言的解释器,进而将该语言转换为人类可读的形式。
跨越不同编程语言和系统的解释器实现,依赖于对Interpreter模式的正确使用。
本文将介绍Interpreter模式的概念和原理,并通过具体实例来实现详解。
一、Interpreter模式概述Interpreter模式也被称为解释器模式,它是指通过一种特定的语法规则来实现对某种语言的解释器,进而将该语言转换为人类可读的形式。
Interpreter模式的本质是对语法树的遍历,一般适用于解释自定义语言或运行时需要改变语法的情况。
二、Interpreter模式原理1.抽象语法树在Interpreter模式中,首先需要对某语言的语法进行定义,即语法规则。
语法规则会被解析成一棵抽象的语法树,该语法树是对语法的逐层抽象。
2.解释器节点在语法树上,每个节点都对应着一个解释器。
节点的左节点和右节点分别表示树中的运算、函数、方法、参数等。
3.解释器解释器负责解释语法树上的节点,将其转化为相应的指令或动作。
三、Interpreter模式示例我们以一个简单的实例来说明Interpreter模式的实现过程:需要解释实现以下语句:if (a > b && c < d) { doSomething(); } else { doSomethingElse(); }上述语句首先需要将其解析为语法树,其中if节点的左子节点为条件表达式节点,右子节点为代码块节点,if节点的左子节点又分别对应两个比较表达式节点和关系运算节点。
我们定义解释器如下:public interface Interpreter {boolean interpret(String context);}1.条件表达式解释器:public class ExpressionInterpreter implements Interpreter {private String expression;public ExpressionInterpreter(String expression) {this.expression = expression;}@Overridepublic boolean interpret(String context) {return context.contains(expression);}}2.比较表达式解释器:public class CompareInterpreter implements Interpreter {private Interpreter leftInterpreter, rightInterpreter;public CompareInterpreter(Interpreter leftInterpreter, Interpreter rightInterpreter) {this.leftInterpreter = leftInterpreter;this.rightInterpreter = rightInterpreter;}@Overridepublic boolean interpret(String context) {return leftInterpreter.interpret(context) && rightInterpreter.interpret(context);}}3.关系运算解释器:public class AndInterpreter implements Interpreter {private Interpreter leftInterpreter, rightInterpreter;public AndInterpreter(Interpreter leftInterpreter, Interpreter rightInterpreter) {this.leftInterpreter = leftInterpreter;this.rightInterpreter = rightInterpreter;}@Overridepublic boolean interpret(String context) {return leftInterpreter.interpret(context) && rightInterpreter.interpret(context);}}4.代码块解释器:public class CodeInterpreter implements Interpreter { private String code;public CodeInterpreter(String code) {this.code = code;}@Overridepublic boolean interpret(String context) {if (context.contains(code)) {System.out.println("执行代码块:" + code); return true;}return false;}}5.测试代码:public class InterpreterTest {public static void main(String[] args) {String context = "abcdefg";Interpreter aInterpreter = new ExpressionInterpreter("a");Interpreter bInterpreter = new ExpressionInterpreter("b");Interpreter cInterpreter = new ExpressionInterpreter("c");Interpreter dInterpreter = new ExpressionInterpreter("d");Interpreter leftInterpreter = newCompareInterpreter(aInterpreter, bInterpreter);Interpreter rightInterpreter = newCompareInterpreter(cInterpreter, dInterpreter);Interpreter ifInterpreter = new AndInterpreter(leftInterpreter, rightInterpreter);Interpreter elseInterpreter = new CodeInterpreter("else");Interpreter thenInterpreter = newCodeInterpreter("doSomething");Interpreter ifCodeInterpreter = new CodeInterpreter("if");Interpreter syntaxTree = new AndInterpreter(new AndInterpreter(ifInterpreter, thenInterpreter),new AndInterpreter(elseInterpreter, ifCodeInterpreter));syntaxTree.interpret(context);}}在解释器中传入条件表达式、代码块等参数后,通过Interpreter模式将语法树解释成相应的操作。
Interpreter(解释器模式)Interpreter(解释器模式)属于行为型模式。
意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器。
这个解释器使用该表示来解释语言中的句子。
任何一门语言,无论是日常语言还是编程语言都有明确的语法,只要有语法就可以用文法描述,并通过语法解释器将字符串的语言结构化。
举例子如果看不懂上面的意图介绍,没有关系,设计模式需要在日常工作里用起来,结合例子可以加深你的理解,下面我准备了三个例子,让你体会什么场景下会用到这种设计模式。
SQL 解释器SQL 是一种描述语言,所以也适用于解释器模式。
不同的 SQL 方言有不同的语法,我们可以根据某种特定的 SQL 方言定制一套适配它的文法表达式,再利用antlr 解析为一颗语法书。
在这个例子中,antlr 就是解释器。
代码编译器程序语言也因为其天然是字符串的原因,和 SQL、日常语言都类似,需要一种模式解析后才能工作。
不同的语言有不同的文法表示,我们只需要一个类似antlr 的通用解释器,通过传入不同的文法表示,返回不同的对象结构。
自然语言处理自然语言处理也是解释器的一种,首先自然语言处理一般只能处理日常语言的子集,因此先定义好支持的范围,再定义一套分词系统与文法表达式,并将分词后的结果传入灌入了此文法表达式的解释器,这样解释器可以返回结构化数据,根据结构化数据再进行分析与加工。
意图解释意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器。
这个解释器使用该表示来解释语言中的句子。
对于给定的语言,可以是 SQL、代码或自然语言,“定义它的文法的一种表示”即文法可以有多种表示,只需定义一种。
要注意的是,不同文法执行效率会有差异。
“并定义一个解释器”,这个解释器就是类似 antlr 的东西,传给它一个文法表达式,就可以解析句子了。
即:解释器(语言, 文法) = 抽象语法树。
我们可以直接把文法定义耦合到解释器里,但这样做会导致语法复杂时,解释器难以维护。
23种模式趣味解释(转载)最近想看看设计模式方面的东西,搜到这片文章,把模式能用生活细节体现出来,真是太佩服这位仁兄了。
创建型模式1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就行了。
麦当劳和肯德基就是生产鸡翅的Factory工厂模式:客户类和工厂类分开。
消费者任何时候需要某种产品,只需向工厂请求即可。
消费者无须修改就可以接纳新产品。
缺点是当产品修改时,工厂类也要做相应的修改。
如:如何创建及如何向客户端提供。
2、BUILDER—MM最爱听的就是"我爱你"这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM 我只要按对应的键,它就能够用相应的语言说出"我爱你"这句话了,国外的MM也可以轻松搞掂,这就是我的"我爱你"builder。
(这一定比美军在伊拉克用的翻译机好卖)建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。
建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。
建造模式可以强制实行一种分步骤进行的建造过程。
3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说"要一个汉堡",具体要什么样的汉堡呢,让MM直接跟服务员说就行了。
工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
4、PROTOTYPE—跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。
23种设计模式简单明了1. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。
2. 工厂模式(Factory Pattern):定义创建对象的接口,但将实际创建对象的过程推迟到子类中。
3. 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关对象的接口,而无需指定具体的类。
4. 建造者模式(Builder Pattern):将一个复杂对象的创建与表示分离,使同样的构建过程可以创建不同的表示。
5. 原型模式(Prototype Pattern):通过复制现有的对象来创建新对象。
6. 适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另一个接口。
7. 桥接模式(Bridge Pattern):将抽象与实现分离,使它们可以独立变化,从而减少两者之间的耦合。
8. 过滤器模式(Filter Pattern):通过某种条件来过滤一组对象。
9. 组合模式(Composite Pattern):将对象组合成树形结构,以表示 "部分-整体" 的层次结构。
10. 装饰器模式(Decorator Pattern):动态地给一个对象添加一些额外的职责。
11. 外观模式(Facade Pattern):隐藏系统的复杂性,并向客户端提供一个简化的接口。
12. 享元模式(Flyweight Pattern):共享对象,以便有效地支持大量细粒度的对象。
13. 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。
14. 责任链模式(Chain of Responsibility Pattern):将请求的发送者和接收者解耦,并让多个对象都有机会处理这个请求。
15. 命令模式(Command Pattern):将请求封装成对象,从而允许使用不同的请求、队列或者日志请求。
16. 解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
23种设计模式范文设计模式是软件开发中常用的解决方案模式,它们代表了在面对特定问题时的最佳实践和经验总结。
设计模式可以帮助我们更好地组织和设计代码,提高代码的可读性、可维护性和可扩展性。
在本文中,我们将介绍23种常用的设计模式,并分别讨论它们的实现原理和在实际开发中的应用场景。
1. 单例模式(Singleton Pattern)单例模式是最简单的设计模式之一,它确保一个类只有一个实例,并提供一个全局访问点。
在实现上,可以通过将构造函数私有化,然后提供一个静态方法返回实例来实现单例。
应用场景:在需要实现全局唯一访问点的场景下,比如线程池、配置管理器等。
2. 工厂模式(Factory Pattern)工厂模式是用来创建对象的一种模式,它将对象的创建和实现分离,使得代码更易于维护和扩展。
工厂模式有简单工厂模式、工厂方法模式和抽象工厂模式等几种不同的变体。
应用场景:在需要根据不同条件创建不同对象的场景下,比如数据库连接、日志记录等。
3. 抽象工厂模式(Abstract Factory Pattern)抽象工厂模式是工厂模式的一种扩展,它提供一个创建一系列相关或相互依赖对象的接口,而无需指定实际的类。
抽象工厂模式将一组工厂类封装起来,使其可以交换或者替换。
应用场景:在需要创建一组相关对象(如界面主题、操作系统等)并且需要保持一致性的场景下。
4. 建造者模式(Builder Pattern)建造者模式是用来生成复杂对象的一种模式,它将对象的构建与其表现分离,采用逐步构建的方式生成对象,可以让客户端不需要知道具体的构建细节。
应用场景:在构造过程比较复杂,需要多个组件协同工作的场景下,比如构建复杂的UI界面。
5. 原型模式(Prototype Pattern)原型模式是用来克隆对象的一种模式,它通过复制已有对象的原型来创建新的对象,避免了通过构造函数创建对象和初始化成员变量的重复过程。
应用场景:在需要创建大量相似对象或者初始化成本较高的对象时,可以使用原型模式。
解释器模式的原理和应用示例在软件开发中,解释器模式是一种非常重要的设计模式,它可以将一种语言或表达式解析、分析和执行,从而实现代码的自动化运行。
本文将介绍解释器模式的原理和应用示例,以便读者更好地理解和掌握这个设计模式。
一、原理在解释器模式中,有两类角色:抽象表达式和具体表达式。
抽象表达式是所有具体表达式的公共接口,它规定了具体表达式必须实现的操作方法,如解释(interpret)方法。
具体表达式则是不同类型的表达式,它们通过实现抽象表达式接口中的方法来实现具体的解释功能。
在解释器模式中,解释器对象负责将文本或语言解析为语法树,在此过程中,它调用具体表达式对象来解释表达式。
因此,在解释器模式中,解释器对象充当了语言解析器和代码执行器的角色。
通常,在解释器模式中,解析和执行的过程是相互依存的,这意味着解析和执行的代码必须写在同一个类里面。
因此,解释器模式在一些编程语言中被广泛使用,如JavaScript、Ruby和Python等。
二、应用示例为了更好地理解解释器模式的应用,下面我们将通过一个简单的示例来说明:假设你是一个数据分析师,在日常工作中需要对数据进行分类和统计。
为了更好地处理数据,你决定使用解释器模式来编写一个统计脚本。
在这个脚本中,你定义了两个基本的表达式类型:数字表达式和操作符表达式。
数字表达式可以表示一个整数或浮点数,操作符表达式可以表示加减乘除四种二元运算。
为了实现这个脚本,你可以先定义一个抽象表达式类,它包含一个解释方法用于解释表达式:```pythonclass Expression:def interpret(self):pass```然后,你可以定义两个具体表达式类:数字表达式和操作符表达式,它们分别用于表示数字和操作符:```pythonclass NumberExpression(Expression):def __init__(self, value):self.__value = valuedef interpret(self):return self.__valueclass OperatorExpression(Expression):def __init__(self, operator, left, right):self.__operator = operatorself.__left = leftself.__right = rightdef interpret(self):if self.__operator == "+":return self.__left.interpret() + self.__right.interpret()elif self.__operator == "-":return self.__left.interpret() - self.__right.interpret()elif self.__operator == "*":return self.__left.interpret() * self.__right.interpret()elif self.__operator == "/":return self.__left.interpret() / self.__right.interpret()```最后,你可以编写一个解释器类,用于将数据转换为语法树并执行:```pythonclass Interpreter:@staticmethoddef parse(text):tokens = text.split()stack = []for token in tokens:if token.isdigit():stack.append(NumberExpression(int(token)))elif token in ["+", "-", "*", "/"]:right = stack.pop()left = stack.pop()stack.append(OperatorExpression(token, left, right)) else:raise ValueError("Unknown token: " + token)return stack.pop().interpret()```在这个脚本中,你可以使用解释器类将输入的文本转换为语法树,然后通过解释器对象执行:```pythontext = "3 + 4 * 5 - 6 / 2"result = Interpreter.parse(text)print(result) # 19.0```在上面的示例中,我们使用解释器模式来实现了一个简单的数据统计脚本。
软件开发中的解释器模式在软件开发领域,有一种模式被称为解释器模式(Interpreter Pattern),它是一种行为型模式。
解释器模式可以用于解释一种语言或规则,将这种语言或规则转化为计算机可执行的程序,使得程序员能够通过编写代码来更加方便地表达和实现业务规则。
解释器模式的定义解释器模式是一种用于解决特定问题的行为型设计模式。
它定义了一种解释器语言,可以用于表达一组规则或指令,将这些规则或指令转化为计算机可执行的程序。
解释器模式可以用于解释一些与语言有关的问题,例如编译器、解释器、正则表达式、自然语言处理等。
解释器模式的组成部分解释器模式包含四个组成部分:1. 抽象表达式(Expression):定义了一个公共的接口,供具体的语法规则实现。
2. 终结符表达式(Terminal Expression):实现了抽象表达式接口的具体类,用于处理语法规则中的终结符,例如变量和常量。
3. 非终结符表达式(Non-terminal Expression):也实现了抽象表达式接口的具体类,用于处理语法规则中的非终结符,例如加减乘除的运算规则。
4. 上下文(Context):通常包含一个解释器需要的信息,用于在解释器中传递信息。
解释器模式的实现方式实现解释器模式需要在程序中定义一组语法规则,例如算术运算规则。
在这组规则中,各个成员可能是终结符,也可能是非终结符。
以算术运算为例,定义一个四则运算的语法规则:Expression ::= Number | Expression Operator ExpressionNumber ::= Integer | FloatOperator ::= + | - | * | /其中,Number表示数字,可以是整数或小数,Operator表示运算符,可以是加减乘除。
Expression表示表达式,可以是数字或者运算符,例如:10 + 5 * 2 - 3 / 2可以通过以下的语法规则来构建该表达式:Expression ::= Number Operator Number Operator Number Operator NumberNumber ::= Integer | FloatOperator ::= + | - | * | /在解释器模式中,可以采用递归实现语法规则的解析与计算。
解释器模式(Interpreter Pattern)作者:webabcd介绍给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
示例有一个Message实体类,某个类对它的操作有Get()方法。
现在要求用具有某一规则的中文语法来执行这个操作。
MessageModelusing System;using System.Collections.Generic;using System.Text;namespace Pattern.Interpreter{///<summary>/// Message实体类///</summary>public class MessageModel{///<summary>///构造函数///</summary>///<param name="msg">Message内容</param>///<param name="pt">Message发布时间</param>public MessageModel(string msg, DateTime pt){this._message = msg;this._publishTime = pt;}private string _message;///<summary>/// Message内容///</summary>public string Message{get { return _message; }set { _message = value; }}private DateTime _publishTime;///<summary>/// Message发布时间///</summary>public DateTime PublishTime{get { return _publishTime; }set { _publishTime = value; }}}SqlMessageusing System;using System.Collections.Generic;using System.Text;namespace Pattern.Interpreter{///<summary>/// Sql方式操作Message///</summary>public class SqlMessage{///<summary>///获取Message///</summary>///<returns></returns>public static List<MessageModel> Get(){List<MessageModel> l = new List<MessageModel>();l.Add(new MessageModel("SQL方式获取Message", DateTime.Now));return l;}}}Contextusing System;using System.Collections.Generic;using System.Text;namespace Pattern.Interpreter{///<summary>/// Context///</summary>public class Context{private string _input;private string _output;///<summary>///构造函数///</summary>///<param name="input">输入内容</param>public Context(string input){this._input = input;}///<summary>///输入内容///</summary>public string Input{get { return _input; }set { _input = value; }}///<summary>///输出内容///</summary>public string Output{get { return _output; }set { _output = value; }}}}AbstractExpressionusing System;using System.Collections.Generic;using System.Text;namespace Pattern.Interpreter{///<summary>///抽象公式(AbstractExpression)///</summary>public abstract class AbstractExpression{///<summary>///解释Context的方法///</summary>///<param name="context">context</param>public void Interpret(Context context){if (String.IsNullOrEmpty(context.Input)){return;}context.Output += GetCSharp(context.Input);}///<summary>///获得输入内容所对应的C#代码///</summary>///<param name="source">source</param>///<returns></returns>private string GetCSharp(string source){string csharp = "";string word = "";// 从输入内容中取得要解释的词word = GetWord(source);// 从字典中找到word所对应的C#代码GetDictionary().TryGetValue(word, out csharp);return csharp;}///<summary>///从输入内容中取得要解释的词///</summary>///<param name="source">source</param>///<returns></returns>public abstract string GetWord(string source);///<summary>///获取字典///</summary>///<returns></returns>public abstract Dictionary<string, string> GetDictionary();}DatabaseExpressionusing System;using System.Collections.Generic;using System.Text;using System.Text.RegularExpressions;namespace Pattern.Interpreter{///<summary>///终端公式(TerminalExpression)分析与数据库相关的///</summary>public class DatabaseExpression : AbstractExpression{///<summary>///从输入内容中取得要解释的词///</summary>///<param name="source">source</param>///<returns></returns>public override string GetWord(string source){MatchCollection mc;Regex r = new Regex(@"\{(.*)\}");mc = r.Matches(source);return mc[0].Groups[1].Value;}///<summary>///获取与数据库相关的字典///</summary>///<returns></returns>public override Dictionary<string, string> GetDictionary(){Dictionary<string, string> d = new Dictionary<string, string>();d.Add("数据库", "Sql");return d;}}ObjectExpressionusing System;using System.Collections.Generic;using System.Text;using System.Text.RegularExpressions;namespace Pattern.Interpreter{///<summary>///终端公式(TerminalExpression)分析与对象相关的///</summary>public class ObjectExpression : AbstractExpression{///<summary>///从输入内容中取得要解释的词///</summary>///<param name="source">source</param>///<returns></returns>public override string GetWord(string source){MatchCollection mc;Regex r = new Regex(@"\[(.*)\]");mc = r.Matches(source);return mc[0].Groups[1].Value;}///<summary>///获取与对象相关的字典///</summary>///<returns></returns>public override Dictionary<string, string> GetDictionary(){Dictionary<string, string> d = new Dictionary<string, string>();d.Add("信息", "Message");return d;}}MethodExpressionusing System;using System.Collections.Generic;using System.Text;using System.Text.RegularExpressions;namespace Pattern.Interpreter{///<summary>///终端公式(TerminalExpression)分析与方法相关的///</summary>public class MethodExpression : AbstractExpression{///<summary>///从输入内容中取得要解释的词///</summary>///<param name="source">source</param>///<returns></returns>public override string GetWord(string source){MatchCollection mc;Regex r = new Regex(@"\((.*)\)");mc = r.Matches(source);return mc[0].Groups[1].Value;}///<summary>///获取与方法相关的字典///</summary>///<returns></returns>public override Dictionary<string, string> GetDictionary(){Dictionary<string, string> d = new Dictionary<string, string>();d.Add("获取", ".Get()");return d;}}clientusing System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using Microsoft.CSharp;using System.Reflection;using System.Text;using System.Collections.Generic;using Pattern.Interpreter;public partial class Interpreter : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){string chinese = "{数据库}[信息](获取)";Context context = new Context(chinese);List<AbstractExpression> l = new List<AbstractExpression>();l.Add(new DatabaseExpression());l.Add(new ObjectExpression());l.Add(new MethodExpression());foreach (AbstractExpression exp in l){exp.Interpret(context);}Assembly assembly = Assembly.Load("Pattern.Interpreter");MethodInfo method = assembly.GetType("Pattern.Interpreter." + context. Output.Split('.')[0]).GetMethod(context.Output.Split('.')[1].Replace("()", ""));object obj = method.Invoke(null, null);List<MessageModel> m = (List<MessageModel>)obj;Response.Write("中文语法:" + chinese);Response.Write("<br />");Response.Write("解释后的C#代码:" + context.Output);Response.Write("<br />");Response.Write("执行结果:" + m[0].Message + " " + m[0].PublishTime.To String());}}运行结果中文语法:{数据库}[信息](获取)解释后的C#代码:SqlMessage.Get()执行结果:SQL方式获取Message 2007-5-1 8:48:07参考/Patterns/PatternInterpreter.aspx。