解释器模式 提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。
总结:提供抽象 表达式 并提供参数,实现类 传参 然后比较 表达式 提供的 参数
场景:运算表达式计算。
优点: 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、解释器模式会引起类膨胀。