大佬教程收集整理的这篇文章主要介绍了C#设计模式:解释器模式(Interpreter Pattern),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一,C#设计模式:解释器模式(Interpreter Pattern)
1,解释器模式的应用场合是Interpreter模式应用中的难点,只有满足“业务规则频繁变化,且类似的模式不断重复出现,并且容易抽象为语法规则的问题”才适合使用解释器模式
2,解释器设计模式每个解释的类有自己的规则,并且与其他业务规则不冲突
二,如下代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _23.解释器模式 { /// <sumMary> /// Interpreter模式的应用场合是Interpreter模式应用中的难点,只有满足“业务规则频繁变化,且类似的模式不断重复出现,并且容易抽象为语法规则的问题”才适合使用Interpreter模式。 /// 1、当一个语言需要解释执行,并可以将该语言中的句子表示为一个抽象语法树的时候,可以考虑使用解释器模式(如XML文档解释、正则表达式等领域) /// 2、一些重复出现的问题可以用一种简单的语言来进行表达。 /// 3、一个语言的文法较为简单. /// 4、当执行效率不是关键和主要关心的问题时可考虑解释器模式(注:高效的解释器通常不是通过直接解释抽象语法树来实现的,而是需要将它们转换成其他形式,使用解释器模式的执行效率并不高。) /// </sumMary> class Program { static void Main(String[] args) { Context context = new Context("usachi"); List<PeopleInterpreter> interpreterList = new List<PeopleInterpreter>() { new Chinese(),new Usa(),}; foreach (var item in interpreterList) { item.Conversion(context); } Console.WriteLine(context.Get()); } } /// <sumMary> /// 上下文 /// </sumMary> public class Context { private String _Word = null; public Context(String word) { this._Word = word; } public void Set(String newWord) { this._Word = newWord; } public String Get() { return this._Word; } } /// <sumMary> /// 抽象解释器 /// </sumMary> public abstract class PeopleInterpreter { public abstract void Conversion(Context context); } /// <sumMary> /// 中国人业务 /// </sumMary> public class Chinese : PeopleInterpreter { private static Dictionary<char,String> _Dictionary = new Dictionary<char,String>(); /// <sumMary> /// 中国人自己解释规则 /// </sumMary> static Chinese() { _Dictionary.Add(‘u‘,"美国人"); _Dictionary.Add(‘s‘,"用刀叉"); _Dictionary.Add(‘a‘,"吃饭,"); } public override void Conversion(Context context) { Console.WriteLine(this.GetType().ToString() + "业务"); String text = context.Get(); if (String.IsNullOrEmpty(text)) return; List<String> numberList = new List<String>(); foreach (var item in text.ToLower().ToArray()) { if (_Dictionary.ContainsKey(item)) { numberList.Add(_DictionarY[item]); } else { numberList.Add(item.ToString()); } } context.Set(String.Concat(numberList)); } } /// <sumMary> /// 美国人业务 /// </sumMary> public class Usa : PeopleInterpreter { private static Dictionary<char,String>(); /// <sumMary> /// 美国人自己解释规则 /// </sumMary> static Usa() { _Dictionary.Add(‘c‘,"中国人"); _Dictionary.Add(‘h‘,"用"); _Dictionary.Add(‘i‘,"筷子吃饭"); } public override void Conversion(Context context) { Console.WriteLine(this.GetType().ToString() + "业务"); String text = context.Get(); if (String.IsNullOrEmpty(text)) return; List<String> numberList = new List<String>(); foreach (var item in text.ToLower().ToArray()) { if (_Dictionary.ContainsKey(item)) { numberList.Add(_DictionarY[item]); } else { numberList.Add(item.ToString()); } } context.Set(String.Concat(numberList)); } } }
以上是大佬教程为你收集整理的C#设计模式:解释器模式(Interpreter Pattern)全部内容,希望文章能够帮你解决C#设计模式:解释器模式(Interpreter Pattern)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。