1.解釋器模式簡介
? ?解釋器模式(Interpreter Pattern)提供了評估語言的語法或表達式的方式,它屬于行為型模式。這種模式實現(xiàn)了一個表達式接口,該接口解釋一個特定的上下文。這種模式被用在 SQL 解析、符號處理引擎等。
2.源碼實現(xiàn)
#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.運行及其結(jié)果
$ ./example
PlusExpression: 11
MinusExpression: 10