设计模式
官方:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子
代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace StrategyMo.JieShiQi { public abstract class AbstractExpression { public abstract void Interpret(JieShiContext context); } public class TerminalExpression : AbstractExpression { public override void Interpret(JieShiContext context) { Console.WriteLine("终端解释器"); } } public class NonTerminalExpression : AbstractExpression { public override void Interpret(JieShiContext context) { Console.WriteLine("非终端解释器"); } } public class JieShiContext { private string input; public string Input { get { return input; } set { input = value; } } private string output; public string Output { get { return output; } set { output = value; } } } }
客户端使用
JieShiContext js = new JieShiContext(); IList<AbstractExpression> lists = new List<AbstractExpression>(); lists.Add(new TerminalExpression()); lists.Add(new NonTerminalExpression()); lists.Add(new TerminalExpression()); lists.Add(new TerminalExpression()); foreach (var item in lists) { item.Interpret(js); }
总结:装载多个解释器。 解释器1个入口,就是Context对象,拿到后,解析处理。
这个是模型,真正运用起来,这个模式还是有点难度的。