91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

指針函數在觀察者模式中的實現

發布時間:2024-08-03 15:06:13 來源:億速云 閱讀:85 作者:小樊 欄目:編程語言

在觀察者模式中,指針函數可以用來實現將觀察者對象注冊到主題對象的通知列表中,并在主題對象發生變化時通知所有注冊的觀察者對象。

具體來說,在實現觀察者模式時,我們可以定義一個指向函數的指針類型,用來表示觀察者對象所需調用的函數。然后在觀察者對象中保存該函數指針,并在注冊到主題對象時將該函數指針賦值為主題對象的通知函數。

當主題對象發生變化時,可以通過調用觀察者對象保存的函數指針來通知觀察者對象進行相應的處理操作。這樣可以實現觀察者模式的解耦和擴展性。

以下是一個簡單的示例代碼,演示了指針函數在觀察者模式中的實現:

#include <iostream>
#include <vector>

class Observer;

typedef void (*NotifyFunc)(Observer*);

class Subject {
public:
    void registerObserver(Observer* observer, NotifyFunc notifyFunc) {
        observers.push_back(observer);
        observer->setNotifyFunc(notifyFunc);
    }

    void notifyObservers() {
        for (Observer* observer : observers) {
            observer->notify();
        }
    }

private:
    std::vector<Observer*> observers;
};

class Observer {
public:
    void setNotifyFunc(NotifyFunc notifyFunc) {
        this->notifyFunc = notifyFunc;
    }

    void notify() {
        if (notifyFunc) {
            notifyFunc(this);
        }
    }

    void update() {
        std::cout << "Observer updated" << std::endl;
    }

private:
    NotifyFunc notifyFunc;
};

void notifyFunc(Observer* observer) {
    observer->update();
}

int main() {
    Subject subject;
    Observer observer1;
    Observer observer2;

    subject.registerObserver(&observer1, notifyFunc);
    subject.registerObserver(&observer2, notifyFunc);

    subject.notifyObservers();

    return 0;
}

在上面的示例中,我們定義了一個 NotifyFunc 類型的函數指針,用來表示觀察者對象的通知函數。在 Subject 類中,我們實現了注冊觀察者和通知觀察者的功能。在 Observer 類中,我們保存了通知函數的指針,并在 notify 方法中調用該函數指針來通知觀察者對象進行更新操作。在 main 函數中,我們創建了一個主題對象和兩個觀察者對象,并注冊到主題對象中,然后通過調用 notifyObservers 方法來通知所有觀察者對象進行更新操作。

通過使用指針函數,我們可以靈活地添加新的觀察者對象和通知函數,從而實現觀察者模式的擴展和解耦。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

霸州市| 武强县| 陆丰市| 博湖县| 廉江市| 当阳市| 武义县| 北辰区| 中卫市| 胶州市| 中西区| 邹平县| 台江县| 柳河县| 双桥区| 黄骅市| 庐江县| 瑞丽市| 车险| 大洼县| 西昌市| 八宿县| 福贡县| 土默特左旗| 岳西县| 罗山县| 江陵县| 文成县| 宜丰县| 营口市| 准格尔旗| 大悟县| 涿鹿县| 苗栗市| 略阳县| 马关县| 梁山县| 柳林县| 彩票| 贵阳市| 淮滨县|