Skip to content

解释器模式

回到目录

简介

参考链接

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

UML类图

代码示例

#include <iostream>
#include <string>

using namespace std;

class Context
{
public:
  Context(int num) {
    m_num = num;
  }
  int m_num;
private:
};

class Expression
{
public:
  virtual void interpreter(Context *context) = 0;
};

class PlusExpression : public Expression
{
public:
  virtual void interpreter(Context *context) {
    int num = context->m_num;
    num++;
    std::cout << "PlusExpression result: " << num << std::endl;
  }
};

class MinusExpression : public Expression
{
public:
  virtual void interpreter(Context *context) {
    int num = context->m_num;
    num--;
    std::cout << "MinusExpression result: " << num << std::endl;
  }
};

int main(int argc, char **argv)
{
  Context *pcxt = new Context(10);
  Expression *e1 = new PlusExpression();
  Expression *e2 = new MinusExpression();

  e1->interpreter(pcxt);
  e2->interpreter(pcxt);

  delete e1;
  delete e2;
  delete pcxt;

  return 0;
}