1. 解释器模式
一个表达式中有多个语法,每一个语法就是一个派生类,有一个特定的解释;
解释器模式是讲一个表达式根据语法分为多个派生类,并且对每一个派生类执行解释。
下面的代码是使用解释器模式求解"a+b-c", 思路是求得的值放在栈顶;
class Expression {
public:
virtual int interpreter(map<string, int>& var) = 0;
virtual ~Expression() {
}
};
class VarExpression :public Expression {
private:
string key;
public:
VarExpression(const string& k) :key(k) {
}
virtual int interpreter(map<string, int>& var) {
return var[key];
}
virtual ~VarExpression() {
cout << "~VarExpression()" << endl;
}
};
class SymbolExpression :public Expression {
protected:
Expression* left;
Expression* right;
public:
SymbolExpression(Expression* l, Expression* r) :left(l), right(r) {
}
Expression