设计模式之解释器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--;
}
}
浙公网安备 33010602011771号