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

(三)行為模式:7、觀察者模式(Observer Pattern)(C++示例)

這篇具有很好參考價值的文章主要介紹了(三)行為模式:7、觀察者模式(Observer Pattern)(C++示例)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1、觀察者模式(Observer Pattern)含義

2、觀察者模式的UML圖學(xué)習(xí)

3、觀察者模式的應(yīng)用場景

4、觀察者模式的優(yōu)缺點

(1)優(yōu)點:

(2)缺點

5、C++實現(xiàn)觀察者模式的實例


1、觀察者模式(Observer Pattern)含義

觀察者模式(Observer)定義了一種一對多的依賴關(guān)系,讓多個觀察者對象同事監(jiān)聽某一個主題對象。這個主題對象在狀態(tài)發(fā)生變化時,會通知所有觀察者對象,使它們能夠自動更新自己?!綝P】

觀察者模式(Observer Pattern)是一種行為型設(shè)計模式,它定義了對象之間的一對多依賴關(guān)系,使得當(dāng)一個對象狀態(tài)發(fā)生改變時,所有依賴它的對象都會自動收到通知并更新。

2、觀察者模式的UML圖學(xué)習(xí)

(三)行為模式:7、觀察者模式(Observer Pattern)(C++示例),設(shè)計模式,觀察者模式,設(shè)計模式,c++

觀察者模式的主要角色包括:

(1)Subject(目標):被觀察的對象,它維護了一個觀察者列表,并提供了添加、刪除和通知觀察者的方法。

(2)Observer(觀察者):觀察目標的對象,它定義了接收通知并進行相應(yīng)操作的方法。

(3)ConcreteSubject(具體目標):具體的被觀察對象,繼承或?qū)崿F(xiàn)了Subject接口,可以有多個不同的具體目標。

(4)ConcreteObserver(具體觀察者):具體的觀察者對象,繼承或?qū)崿F(xiàn)了Observer接口,可以有多個不同的具體觀察者。

3、觀察者模式的應(yīng)用場景

(1)當(dāng)一個對象的改變需要同時通知其他對象,并且不知道具體有多少個對象需要通知時。

(2)當(dāng)一個抽象模型有兩個方面,其中一個方面依賴于另一個方面,將這兩個方面封裝在獨立的對象中,使它們可以獨立地改變和復(fù)用時。

4、觀察者模式的優(yōu)缺點

(1)優(yōu)點:

? ? ? ? 1)解耦性:觀察者模式將目標和觀察者解耦,使得它們可以獨立地變化。

? ? ? ? 2)擴展性:可以很方便地增加新的觀察者和目標,符合開閉原則。

? ? ? ? 3)可以實現(xiàn)一對多的依賴關(guān)系,一個目標可以有多個觀察者。

(2)缺點

? ? ? 1)觀察者過多時,會導(dǎo)致通知時間增加,影響性能。

? ? ? ? 2)觀察者和目標之間有循環(huán)依賴時,可能會導(dǎo)致循環(huán)調(diào)用,需要注意避免。

5、C++實現(xiàn)觀察者模式的實例


#include <iostream>
#include <vector>

// 觀察者接口
class Observer 
{
public:
    virtual void update(int data) = 0;
};

// 具體觀察者A
class ConcreteObserverA : public Observer 
{
public:
    void update(int data) override 
    {
        std::cout << "ConcreteObserverA received update: " << data << std::endl;
    }
};

// 具體觀察者B
class ConcreteObserverB : public Observer 
{
public:
    void update(int data) override 
    {
        std::cout << "ConcreteObserverB received update: " << data << std::endl;
    }
};

// 目標類
class Subject 
{
private:
    int data;
    std::vector<Observer*> observers;

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

    void detach(Observer* observer) 
    {
        for (auto it = observers.begin(); it != observers.end(); ++it) 
        {
            if (*it == observer) 
            {
                observers.erase(it);
                break;
            }
        }
    }

    void notify() 
    {
        for (auto observer : observers) 
        {
            observer->update(data);
        }
    }

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

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

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

    subject.setData(10);

    subject.detach(&observerA);

    subject.setData(20);

    return 0;
}

在上述示例中,我們定義了Observer接口和兩個具體觀察者類ConcreteObserverA和ConcreteObserverB。Subject類作為目標類,維護了一個觀察者列表,并提供了attach、detach和notify等方法。在主函數(shù)中,我們創(chuàng)建了一個Subject對象和兩個具體觀察者對象,并通過attach方法將它們注冊到Subject中。然后,通過setData方法改變Subject的數(shù)據(jù),從而觸發(fā)通知并更新觀察者。文章來源地址http://www.zghlxwxcb.cn/news/detail-696431.html

到了這里,關(guān)于(三)行為模式:7、觀察者模式(Observer Pattern)(C++示例)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 設(shè)計模式——觀察者模式(Observer Pattern)+ Spring相關(guān)源碼

    類型:行為型模式 目的:當(dāng)一個對象的狀態(tài)發(fā)生改變時,其所有依賴者(觀察者)都會收到通知并自動更新。 2.1.1 定義觀察者 2.1.2 定義被觀察對象 2.1.3 使用 2.2.1 觀察者接口Observer 2.2.1 被觀察者對象Observable 2.3.1 觀察者 2.3.2 被觀察者 創(chuàng)建型模式 結(jié)構(gòu)型模式 1、設(shè)計模式——

    2024年02月06日
    瀏覽(23)
  • 觀察者模式(Observer)

    觀察者模式(Observer)

    事件訂閱者者(Event-Subscriber) 監(jiān)聽者(Listener) 觀察者 是一種行為設(shè)計模式, 允許你定義一種訂閱機制, 可在對象事件發(fā)生時通知多個“觀察”該對象的其他對象。 1. 問題 假如你有兩種類型的對象 :“顧客”和“商店”。顧客對某個特定品牌的產(chǎn)品非常感興趣(例如最

    2024年02月12日
    瀏覽(20)
  • 觀察者模式(Observer)

    觀察者模式(Observer)

    觀察著模式是一種行為設(shè)計模式,可以用來定義對象間的一對多依賴關(guān)系,使得每當(dāng)一個對象狀態(tài)發(fā)生改變時,其相關(guān)依賴對象皆得到通知并被自動更新。 觀察者模式又叫做發(fā)布-訂閱(Publish/Subscribe)模式、模型-視圖(Model/View)模式、源-監(jiān)聽器(Source/Listener)模式或從屬者

    2024年02月14日
    瀏覽(24)
  • C++設(shè)計模式行為型之觀察者模式

    一、 概述 ????????觀察者模式定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。 二、 示例代碼 #include list class Subject; class Observer { public: ?? ?virtual ~Observer(); ?? ?virtual void Update(Subject* theChangedSubject) =

    2024年02月14日
    瀏覽(27)
  • 設(shè)計模式—觀察者模式(Observer)

    設(shè)計模式—觀察者模式(Observer)

    目錄 思維導(dǎo)圖 一、什么是觀察者模式? 二、有什么優(yōu)點嗎? 三、有什么缺點嗎? 四、什么時候使用觀察者模式? 五、代碼展示 ①、雙向耦合的代碼 ②、解耦實踐一 ③、解耦實踐二 ④、觀察者模式 六、這個模式涉及到了哪些知識點? 又叫發(fā)布-訂閱(publish/Subscrib)模式

    2024年02月11日
    瀏覽(21)
  • Kotlin~Observer觀察者模式

    Kotlin~Observer觀察者模式

    概念 定義一對多的依賴關(guān)系,讓多個觀察者同時監(jiān)聽一個主題對象。 角色介紹 Subject:主題,也稱被觀察者,它是具有狀態(tài)的對象維護著一個觀察者列表。提供添加、刪除和通知觀察者的方法。 ConcreteSubject:具體主題,主題的具體實現(xiàn)類,維護觀察者列表,狀態(tài)改變時通知

    2024年02月15日
    瀏覽(19)
  • 【設(shè)計模式-06】Observer觀察者模式

    【設(shè)計模式-06】Observer觀察者模式

    事件處理模型 場景示例:小朋友睡醒了哭,餓! 核心思路和邏輯 定義事件類 ActionEvent 定義接口類 ActionListener 和接口方法 void actionPerformed(ActionEvent e); 自定義 Button 類,模擬按鈕點擊事件 自定義監(jiān)聽者 MyActionEventListener 和 MyActionEventListener2 實現(xiàn)接口 void actionPerformed(ActionEvent

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

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

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

    2024年02月16日
    瀏覽(25)
  • 設(shè)計模式(四) —— 觀察者模式/發(fā)布訂閱模式,c和c++示例代碼

    往期地址: 設(shè)計模式(一)——簡單工廠模式 設(shè)計模式(二)——策略模式 設(shè)計模式(三)——裝飾模式 本期主題: 使用c和c++代碼,講解觀察者模式、發(fā)布訂閱模式 發(fā)布-訂閱模式是一種行為設(shè)計模式,它允許多個對象通過事件的發(fā)布和訂閱來進行通信; 在這種模式中,

    2023年04月17日
    瀏覽(93)
  • 行為型模式 | 觀察者模式

    行為型模式 | 觀察者模式

    觀察者模式又叫做發(fā)布-訂閱(Publish/Subscribe)模式,定義了一種一對多的依賴關(guān)系 。讓多個觀察者對象同時監(jiān)聽某一個主題對象,這個主題對象在狀態(tài)上發(fā)生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。 軟件系統(tǒng)常常要求在某一個對象的狀態(tài)發(fā)生變化的時候

    2024年01月22日
    瀏覽(54)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包