1.解释器模式简介
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
2.源码实现
#include <iostream>
#include <string>
using namespace std;
class Context
{
public:
Context(int num)
{
m_num = num;
}
public:
void setNum(int num)
{
m_num = num;
}
int getNum()
{
return m_num;
}
void setRes(int res)
{
m_res = res;
}
int getRes()
{
return m_res;
}
private:
int m_num;
int m_res;
};
class Expression
{
public:
virtual void interpreter(Context *context) = 0;
};
class PlusExpression : public Expression
{
public:
virtual void interpreter(Context *context)
{
int num = context->getNum();
num++;
context->setNum(num);
context->setRes(num);
}
};
class MinusExpression : public Expression
{
public:
virtual void interpreter(Context *context)
{
int num = context->getNum();
num--;
context->setNum(num);
context->setRes(num);
}
};
int main(int argc, char **argv)
{
Context *pcxt = new Context(10);
Expression *e1 = new PlusExpression();
e1->interpreter(pcxt);
cout << "PlusExpression: " << pcxt->getRes() << endl;
Expression *e2 = new MinusExpression();
e2->interpreter(pcxt);
cout << "MinusExpression: " << pcxt->getRes() << endl;
delete e1;
delete e2;
delete pcxt;
return 0;
}
3.编译源码
$ g++ -o example example.cpp
4.运行及其结果
$ ./example
PlusExpression: 11
MinusExpression: 10
网友评论