c#设计模式之解释器模式

解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。

类图如下


AbstractExpression

 public abstract class AbstractExpression
    {
        public abstract void Interpreter(string context);
    }

TerminalExpression

public class TerminalExpression : AbstractExpression
    {
        public override void Interpreter(string context)
        {
            Console.WriteLine($"Interpreter in TerminalExpression: {context}");
        }
    }

NonterminalExpression

public class NonterminalExpression : AbstractExpression
    {
        public override void Interpreter(string context)
        {
            if (context.Contains("的"))
            {
                var index = context.IndexOf("的");
                Console.WriteLine($"Interpreter in NonterminalExpression: {context.Substring(0,index+1)}");
                new NonterminalExpression().Interpreter(context.Substring(index+1));
            }
            else
            {
                new TerminalExpression().Interpreter(context);
            }
        }
    }

Context

public class Context
    {
        public void Interpreter(string sentence)
        {
            if(sentence.Contains("的"))
            {
                new NonterminalExpression().Interpreter(sentence);
            }
            else
            {
                new TerminalExpression().Interpreter(sentence);
            }
        }
    }

调用

static void Main(string[] args)
        {
            string sentence = "美丽的古老的北京";
            new Context().Interpreter(sentence);
        }

优点:

  1. 可扩展性好,易于扩展NonterminalExpression类

缺点:

  1. 对于复杂的功能比较复杂,难维护
  2. 递归调用,效率不高

源代码地址: 点击我下载 提取码: 75wq

你可能感兴趣的:(c#设计模式之解释器模式)