MIX Fold3包裝盒泄露 新機本月登場
小米的全新折疊屏旗艦MIX Fold3將于本月發布,近日該機的真機包裝盒在網上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續了之前的方案,變化不大,這也是目前小米旗艦
觀察者模式是一種行為設計模式,其中一個對象(主題)維護其依賴對象(觀察者)的列表,當主題的狀態發生變化時,它通知所有觀察者。以下是一個使用C++11實現觀察者模式的簡單例子:
下面是對上述步驟的更詳細的講解:
// Observer.h#pragma onceclass Observer {public: virtual void update(int data) = 0;};
// ConcreteObserverA.h#pragma once#include <iostream>#include "Observer.h"class ConcreteObserverA : public Observer {public: void update(int data) override { std::cout << "Observer A 收到更新,數據為: " << 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 收到更新,數據為: " << data << std::endl; }};
// 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;};
// 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; }};
// 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;}
在這個例子中,我們創建了抽象觀察者類 Observer,具體觀察者類 ConcreteObserverA 和 ConcreteObserverB。然后,我們定義了抽象主題類 Subject 和具體主題類 ConcreteSubject。最后,在客戶端代碼中,我們創建了具體的主題和觀察者對象,將觀察者添加到主題中,并演示了狀態變化時如何通知觀察者,以及如何移除觀察者。
本文鏈接:http://www.www897cc.com/showinfo-26-81867-0.html用C++11打造智能觀察者模式:詳解實現步驟完整示例代碼
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com