解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。
模式所涉及到4个角色:
UML图
代码实现
class Context
{
private int sum;
public int Sum
{
get { return sum; }
set { sum=value;}
}
}
/// 解释器抽象类。
abstract class AbstractExpreesion
{
public abstract void Interpret(Context context);
}
/// 解释器具体实现类
class PlusExpression : AbstractExpreesion
{
public override void Interpret(Context context)
{
int sum = context.Sum;
sum++;
context.Sum = sum;
}
}
/// 解释器具体实现类。 自减
class MinusExpression : AbstractExpreesion
{
public override void Interpret(Context context)
{
int sum = context.Sum;
sum--;
context.Sum = sum;
}
}
测试
class Interpreter{
static void Main(string[] args){
Context context = new Context();
context.Sum = 10;
List<AbstractExpreesion> list = new List<AbstractExpreesion>();
//运行加法三次
list.Add(new PlusExpression());
list.Add(new PlusExpression());
list.Add(new PlusExpression());
//运行减法两次
list.Add(new MinusExpression());
list.Add(new MinusExpression());
for (int i = 0; i < list.Count(); i++)
{
AbstractExpreesion expression = list[i];
expression.Interpret(context);
}
Console.WriteLine(context.Sum);
Console.ReadLine();
}
}