解释器模式 提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。
总结:提供抽象 表达式 并提供参数,实现类 传参 然后比较 表达式 提供的 参数
场景:运算表达式计算。
优点: 1、可扩展性比较好,灵活。 2、增加了新的解释表达式的方式。 3、易于实现简单文法。
下面 使用 简单例子 描述 解释器模式:
namespace 解释器模式
{
internal class Program
{
static void Main(string[] args)
{
AndExpression andExpression = new AndExpression(new TerminalExpression("张三"), new TerminalExpression("张三"));
bool result= andExpression.Interpret("张三");
Console.WriteLine("比较结果返回:" + result);
/*
* 控制台 : 比较结果返回:True
*/
}
}
//表达
public interface Expression
{
bool Interpret(string context);
}
//比较模板
public class TerminalExpression : Expression
{
private string data;
public TerminalExpression(string data)
{
this.data = data;
}
public bool Interpret(string context)
{
if(data == context)
{
return true;
}
return false;
}
}
//使用TerminalExpression模板 进行&&比较 解释表达式
public class AndExpression : Expression
{
Expression expression1 = null;
Expression expression2 = null;
public AndExpression(Expression expression1, Expression expression2)
{
this.expression1 = expression1;
this.expression2 = expression2;
}
public bool Interpret(string context)
{
return expression1.Interpret(context) && expression2.Interpret(context);
}
}
}
缺点: 1、可利用场景比较少。 2、对于复杂的文法比较难维护。 3、解释器模式会引起类膨胀。