/** * @name 解释器模式 * @brief: 定义语言的语法表示 * @note 场景:SQL解析、正则表达式、数学公式计算 */ class Expression { public: virtual int interpret() = 0; }; class Number : public Expression { public: Number(int value) : value(value) {} int interpret() override { return value; } private: int value; }; class Add : public Expression { public: Add(Expression* left, Expression* right) : left(left), right(right) {} int interpret() override { return left->interpret() + right->interpret(); } private: Expression* left; Expression* right; }; // 使用:构建表达式树 (2 + (3 + 4)) Expression* expr = new Add( new Number(2), new Add(new Number(3), new Number(4)) ); int main() { int result = expr->interpret(); // 输出9 }