风动破

导航

设计模式之解释器interpreter

http://www.cnblogs.com/sc0791/p/3679769.html 

 

Interpreter模式也叫解释器模式,是由GoF提出的23种设计模式中的一种。Interpreter是行为模式之一,它是一种特殊的设计模式,它建立一个解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法。

适用场景:

        1.当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树,可以使用解释器模式。而当存在以下情况时该模式效果最好

        2.该文法的类层次结构变得庞大而无法管理。此时语法分析程序生成器这样的工具是最好的选择。他们无需构建抽象语法树即可解释表达式,这样可以节省空间而且还可能节省时间。

        3.效率不是一个关键问题,最高效的解释器通常不是通过直接解释语法分析树实现的,而是首先将他们装换成另一种形式,例如,正则表达式通常被装换成状态机,即使在这种情况下,转换器仍可用解释器模式实现,该模式仍是有用的 

 ==============================================

    public class InterpreterMode

    {
        public InterpreterMode(){
            Context context = new Context();
            context.Sum = 20;
            List<AbstractException> list = new List<AbstractException>();
            list.Add(new PlusException());
            list.Add(new MinusException());
            list.Add(new MinusException());
            for (int i = 0; i < list.Count; i++) {
                list[i].Interpret(context);
            }
            Console.WriteLine(context.Sum);
        }
    }
    public class Context {
        public int Sum { set; get; }
    }
    /// <summary>
    /// 解释器
    /// </summary>
    public interface AbstractException {
        void Interpret(Context context);
    }
    /// <summary>
    /// ++
    /// </summary>
    public class PlusException :AbstractException{
        public void Interpret(Context context)
        {
            context.Sum++;
        }
    }
    /// <summary>
    /// --
    /// </summary>
    public class MinusException : AbstractException {
        public void Interpret(Context context) {
            context.Sum--;
        }
    }

posted on 2015-05-04 14:59  风动破  阅读(123)  评论(0)    收藏  举报