2.觀察者模式

定義


觀察者模式定義了對(duì)象之間的一對(duì)多依賴,這樣一來,當(dāng)一個(gè)對(duì)象改變時(shí),它的所有依賴者都會(huì)收到通知并自動(dòng)更新。

類圖


觀察者模式.png

代碼


//subject.h
class subject
{
    public:
        virtual void register_observer(observer* ob) = 0;
        virtual void remove_observer(observer* ob) = 0;
        virtual void notify_observers() = 0;
    
    private:
        std::set<observer*> observer_set;
};

class concreate_subject: public subject
{
    public:
        void register_observer(observer* ob);
        void remove_observer(observer* ob);
        void notify_observers();
};

//subject.cpp
void concreate_subject:: register_observer(observer* ob)
{
    observer_set.insert(ob);
}

void concreate_subject:: remove_observer(observer* ob)
{
    observer_set.erase(ob);
}

void concreate_subject:: notify_observers()
{
    std::set<int>::iterator it;
    for (it = observer_set.begin(); it != observer_set.end(); it++)
    {
        if (*it != NULL)
            *it->update();
    }
}
//observer.h
class observer
{
    public:
        virtual void update() = 0;
};

class observer_1: public observer
{
    public:
        void update();
};
//observer.cpp
void observer_1::update()
{
    printf("notified by subject\n");
}

筆記


1.為了交互對(duì)象之間的松耦合設(shè)計(jì)而努力。

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

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

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