c++解釋器模式

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容