解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
对比策略模式
解释器模式代码:
#include <iostream>
#include <string>
using namespace std;
class myrotate
{
public:
string& set_rotation(string _rotation)
{
cout << _rotation << endl;
return _rotation;
}
private:
string rotation;
};
class Expression
{
public:
virtual void interpreter(myrotate *r) = 0;
private:
myrotate *r;
};
//顺时针
class PlusExpression : public Expression
{
public:
virtual void interpreter(myrotate *r)
{
r->set_rotation("顺时针");
}
private:
myrotate *context;
};
//逆时针
class MinusExpression : public Expression
{
public:
virtual void interpreter(myrotate *r)
{
r->set_rotation("逆时针");
}
};
void main()
{
Expression *expression = NULL;
myrotate *context = NULL;
Expression *expression2 = NULL;
context = new myrotate();
expression = new PlusExpression;
expression->interpreter(context);
//
expression2 = new MinusExpression;
expression2->interpreter(context);
cout << "hello..." << endl;
system("pause");
return;
}