设计模式行为型之解释器模式
解释器模式提供了评估语言的语法或表达式的方式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被广泛地应用在 SQL 解析、符号处理引擎等领域。解释器模式在实际的应用开发中运用的场景是比较少的,这里通过一个的例子简单用代码实现一下解释器模式。
/// <summary> /// 定义上下文 用于存储待解释对象 /// </summary> public class StringContext { private string word; public StringContext(string word) { this.word = word; } public void Set(List<string> newWord) { string conten = ""; foreach (string s in newWord) { conten += s; } this.word = conten; } public string Get() { return word; }
/// <summary> /// 定义一个解释器抽象父类 /// </summary> public abstract class BaseInterpreter { /// <summary> /// 定义一个转化方法 /// </summary> public abstract void Conversion(StringContext content); }
/// <summary> /// 定义上下文 用于存储待解释对象 /// </summary> public class StringContext { private string word; public StringContext(string word) { this.word = word; } public void Set(List<string> newWord) { string conten = ""; foreach (string s in newWord) { conten += s; } this.word = conten; } public string Get() { return word; }
上层调用如下
class Program { static void Main(string[] args) { Console.WriteLine("========================================"); //要转化的上下文对象 StringContext content = new StringContext("20200831"); //解释器 BaseInterpreter bases = new Numberlnterpreter(); bases.Conversion(content); Console.WriteLine(content.Get()); Console.ReadKey(); } }
运行结果如下:
一个简单 解释器就实现了,我们可以将数字123456789转化为对应的大写模式。像这样给定一个语言,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象的语法树时,可以考虑使用解释器模式。