国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用C++11打造智能觀察者模式:詳解實(shí)現(xiàn)步驟完整示例代碼

這篇具有很好參考價(jià)值的文章主要介紹了用C++11打造智能觀察者模式:詳解實(shí)現(xiàn)步驟完整示例代碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

用C++11打造智能觀察者模式:詳解實(shí)現(xiàn)步驟完整示例代碼

?

觀察者模式是一種行為設(shè)計(jì)模式,其中一個(gè)對(duì)象(主題)維護(hù)其依賴對(duì)象(觀察者)的列表,當(dāng)主題的狀態(tài)發(fā)生變化時(shí),它通知所有觀察者。以下是一個(gè)使用C++11實(shí)現(xiàn)觀察者模式的簡(jiǎn)單例子:

  1. 定義觀察者接口(Observer):?創(chuàng)建一個(gè)觀察者接口,該接口包含觀察者需要實(shí)現(xiàn)的更新方法。這個(gè)接口可以包含其他方法,但更新方法是必須的。
  2. 創(chuàng)建具體觀察者類:?實(shí)現(xiàn)觀察者接口的具體類。每個(gè)具體觀察者類都應(yīng)該實(shí)現(xiàn)更新方法,該方法定義了在主題狀態(tài)變化時(shí)觀察者應(yīng)該執(zhí)行的操作。
  3. 定義主題接口(Subject):?創(chuàng)建一個(gè)主題接口,該接口包含了添加、移除和通知觀察者的方法。這里可以選擇在主題接口中定義更新?tīng)顟B(tài)的方法,也可以在具體主題類中定義。
  4. 創(chuàng)建具體主題類:?實(shí)現(xiàn)主題接口的具體類。該類應(yīng)該維護(hù)一個(gè)觀察者列表,并在狀態(tài)變化時(shí)通知所有觀察者。
  5. 實(shí)現(xiàn)客戶端代碼:?在客戶端代碼中創(chuàng)建具體的主題和觀察者對(duì)象,將觀察者添加到主題中。客戶端還負(fù)責(zé)觸發(fā)主題狀態(tài)的變化,從而通知觀察者。

下面是對(duì)上述步驟的更詳細(xì)的講解:

步驟 1:定義觀察者接口

// Observer.h
#pragma once

class Observer {
public:
    virtual void update(int data) = 0;
};

步驟 2:創(chuàng)建具體觀察者類

// ConcreteObserverA.h
#pragma once
#include <iostream>
#include "Observer.h"

class ConcreteObserverA : public Observer {
public:
    void update(int data) override {
        std::cout << "Observer A 收到更新,數(shù)據(jù)為: " << data << std::endl;
    }
};
// ConcreteObserverB.h
#pragma once
#include <iostream>
#include "Observer.h"

class ConcreteObserverB : public Observer {
public:
    void update(int data) override {
        std::cout << "Observer B 收到更新,數(shù)據(jù)為: " << data << std::endl;
    }
};

步驟 3:定義主題接口

// Subject.h
#pragma once
#include "Observer.h"

class Subject {
public:
    virtual void addObserver(Observer* observer) = 0;
    virtual void removeObserver(Observer* observer) = 0;
    virtual void notifyObservers(int data) = 0;
};

步驟 4:創(chuàng)建具體主題類

// ConcreteSubject.h
#pragma once
#include <vector>
#include "Subject.h"

class ConcreteSubject : public Subject {
private:
    std::vector<Observer*> observers;
    int data;

public:
    void addObserver(Observer* observer) override {
        observers.push_back(observer);
    }

    void removeObserver(Observer* observer) override {
        observers.erase(std::remove(observers.begin(), observers.end(), observer), observers.end());
    }

    void notifyObservers(int data) override {
        for (Observer* observer : observers) {
            observer->update(data);
        }
    }

    void setData(int newData) {
        data = newData;
        notifyObservers(data);
    }

    int getData() const {
        return data;
    }
};

步驟 5:實(shí)現(xiàn)客戶端代碼

// main.cpp
#include "ConcreteObserverA.h"
#include "ConcreteObserverB.h"
#include "ConcreteSubject.h"

int main() {
    ConcreteSubject subject;
    ConcreteObserverA observerA;
    ConcreteObserverB observerB;

    subject.addObserver(&observerA);
    subject.addObserver(&observerB);

    subject.setData(123);

    subject.removeObserver(&observerA);

    subject.setData(456);

    return 0;
}

在這個(gè)例子中,我們創(chuàng)建了抽象觀察者類?Observer,具體觀察者類?ConcreteObserverA?和?ConcreteObserverB。然后,我們定義了抽象主題類?Subject?和具體主題類?ConcreteSubject。最后,在客戶端代碼中,我們創(chuàng)建了具體的主題和觀察者對(duì)象,將觀察者添加到主題中,并演示了狀態(tài)變化時(shí)如何通知觀察者,以及如何移除觀察者。

?

用C++11打造智能觀察者模式:詳解實(shí)現(xiàn)步驟完整示例代碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-823484.html

到了這里,關(guān)于用C++11打造智能觀察者模式:詳解實(shí)現(xiàn)步驟完整示例代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 用23種設(shè)計(jì)模式打造一個(gè)cocos creator的游戲框架----(十四)觀察者模式

    用23種設(shè)計(jì)模式打造一個(gè)cocos creator的游戲框架----(十四)觀察者模式

    模式名稱:觀察者模式 模式分類:行為型 模式意圖:定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。 結(jié)構(gòu)圖: 適用于: 1、當(dāng)一個(gè)抽象模型有兩個(gè)方面,其中一個(gè)方面依賴于另一個(gè)方面,將這兩者封裝在

    2024年02月04日
    瀏覽(42)
  • 【C++ 觀察者模式 思想理解】C++中的觀察者模式:松耦合設(shè)計(jì)與動(dòng)態(tài)交互的藝術(shù),合理使用智能指針觀察者

    【C++ 觀察者模式 思想理解】C++中的觀察者模式:松耦合設(shè)計(jì)與動(dòng)態(tài)交互的藝術(shù),合理使用智能指針觀察者

    在進(jìn)入技術(shù)細(xì)節(jié)之前,理解觀察者模式(Observer Pattern)的基本概念和它在現(xiàn)代編程中的重要性是至關(guān)重要的。 觀察者模式是一種設(shè)計(jì)模式,它定義了對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并自動(dòng)更新。在C++中,這個(gè)

    2024年01月24日
    瀏覽(48)
  • 【觀察者設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    【觀察者設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    觀察者模式(Observer Pattern)是一種行為型模式。它定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。 觀察者模式使用三個(gè)類Subject、Observer和Client。Subject對(duì)象帶有綁定觀察者到Client對(duì)象和從Client對(duì)象解綁觀察

    2023年04月21日
    瀏覽(24)
  • Unity 觀察者模式(實(shí)例詳解)

    Unity 觀察者模式(實(shí)例詳解)

    在Unity中實(shí)現(xiàn)觀察者模式,我們可以創(chuàng)建一個(gè)Subject(目標(biāo)/主題)類,它負(fù)責(zé)維護(hù)訂閱者列表,并且當(dāng)其狀態(tài)改變時(shí)通知所有觀察者。下面通過(guò)5個(gè)代碼示例來(lái)詳細(xì)展示如何在Unity C#腳本中應(yīng)用觀察者模式: 示例1 - 簡(jiǎn)單的文本更新通知 示例2 - 多觀察者監(jiān)聽(tīng)游戲分?jǐn)?shù)變化 示例

    2024年02月21日
    瀏覽(38)
  • 【設(shè)計(jì)模式】第十二章:觀察者模式詳解及應(yīng)用案例

    【設(shè)計(jì)模式】第十二章:觀察者模式詳解及應(yīng)用案例

    【設(shè)計(jì)模式】七大設(shè)計(jì)原則 【設(shè)計(jì)模式】第一章:?jiǎn)卫J?【設(shè)計(jì)模式】第二章:工廠模式 【設(shè)計(jì)模式】第三章:建造者模式 【設(shè)計(jì)模式】第四章:原型模式 【設(shè)計(jì)模式】第五章:適配器模式 【設(shè)計(jì)模式】第六章:裝飾器模式 【設(shè)計(jì)模式】第七章:代理模式 【設(shè)計(jì)模式

    2024年02月13日
    瀏覽(28)
  • JavaScript 簡(jiǎn)單實(shí)現(xiàn)觀察者模式和發(fā)布-訂閱模式

    JavaScript 簡(jiǎn)單實(shí)現(xiàn)觀察者模式和發(fā)布-訂閱模式

    大家好,我是南木元元,熱衷分享有趣實(shí)用的文章。今天來(lái)聊聊設(shè)計(jì)模式中常用的觀察者模式和發(fā)布-訂閱模式。 觀察者模式定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都將得到通知。 如何理解這句話呢?來(lái)舉個(gè)生活中的例子

    2024年02月12日
    瀏覽(638)
  • Java設(shè)計(jì)模式-觀察者模式-SpringBoot實(shí)現(xiàn)

    Java設(shè)計(jì)模式-觀察者模式-SpringBoot實(shí)現(xiàn)

    項(xiàng)目:https://gitee.com/KakarottoChen/blog-code.git 的:JavaSpringListener Java觀察者模式是一種設(shè)計(jì)模式,用于實(shí)現(xiàn)對(duì)象之間的一對(duì)多依賴關(guān)系。在觀察者模式中,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí),它的所有依賴對(duì)象(觀察者)都會(huì)自動(dòng)收到通知并進(jìn)行相應(yīng)的更新。 觀察者模式由以下幾個(gè)核

    2024年02月08日
    瀏覽(89)
  • Go和Java實(shí)現(xiàn)觀察者模式

    在監(jiān)控系統(tǒng)中,我們需要采集監(jiān)控指標(biāo)的信息,假設(shè)當(dāng)采集的指標(biāo)信息超過(guò)閾值時(shí)我們需要對(duì)該監(jiān)控指標(biāo)持久化到 數(shù)據(jù)庫(kù)中并且進(jìn)行告警。 本文通過(guò)指標(biāo)采集持久化和告警來(lái)說(shuō)明觀察者模式的使用,使用Go語(yǔ)言和Java語(yǔ)言實(shí)現(xiàn)。 觀察者模式是一種行為型設(shè)計(jì)模式,它定義了一

    2024年02月16日
    瀏覽(18)
  • 「觀察者(Observer)」設(shè)計(jì)模式 Swift實(shí)現(xiàn)

    「觀察者(Observer)」設(shè)計(jì)模式 Swift實(shí)現(xiàn)

    觀察者設(shè)計(jì)模式(Observer Pattern)是一種行為型設(shè)計(jì)模式,它定義了對(duì)象之間的一種一對(duì)多的依賴關(guān)系,使得當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí),所有依賴于它的對(duì)象都會(huì)受到通知并自動(dòng)更新。 在這種模式中,被觀察者對(duì)象(Subject)存儲(chǔ)其觀察者對(duì)象(Observer)列表,并提供了用

    2024年02月16日
    瀏覽(25)
  • ts:簡(jiǎn)單實(shí)現(xiàn) mobx 的觀察者模式 observable

    mobx 狀態(tài)管理器 訂閱者: 管理 變化后 回調(diào)的函數(shù)列表 觀察者:將傳入的 數(shù)據(jù)監(jiān)聽(tīng) 起來(lái),并且在 有變化時(shí) , 執(zhí)行 訂閱者管理的 函數(shù)列表

    2024年02月12日
    瀏覽(89)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包