using System; using System.Collections.Generic; using System.Text; using System.Collections; ///Interpreter(解释器)模式描述了如何为简单的语言定义一个文法。 ///add by jzh 2007-04-15 namespace DesignPattern { class ContextMi { private string _statement; private string _data; public ContextMi(string statement, string data) { this._statement = statement; this._data = data; } public string Statement { get { return this._statement; } set { this._statement = value; } } public string Data { get { return this._data; } set { this._data = value; } } } abstract class AbstractExpression { abstract public void Interpret(ContextMi c); } class TerminalExpression : AbstractExpression { override public void Interpret(ContextMi context) { if (context.Statement.Contains("+")) { context.Data = context.Statement.Replace("+", ":jzh"); Console.WriteLine(context.Data); } } } class NonterminalExpression : AbstractExpression { override public void Interpret(ContextMi context) { if (context.Statement.Contains("-")) { context.Data = context.Statement.Replace("-", ":9001"); Console.WriteLine(context.Data); } } } public class Client { public static void Main(string[] args) { string action = "user+code-"; string data = ""; ContextMi c = new ContextMi(action, data); ArrayList arr = new ArrayList(); arr.Add(new TerminalExpression()); arr.Add(new NonterminalExpression()); // interpret foreach (AbstractExpression exp in arr) { exp.Interpret(c); } Console.ReadLine(); } } }