中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

青島百度seoseo網(wǎng)站地圖

青島百度seo,seo網(wǎng)站地圖,phpstudy怎樣做多個網(wǎng)站,網(wǎng)站建設貴觀察者模式: 定義對象間的一種一對多(變化)的依賴關系,以便當一個 對象(Subject)的狀態(tài)發(fā)生改變時,所有依賴于它的對象都 得到通知并自動更新 動機: 在軟件構建過程中,我們需要為某些對象建立…

觀察者模式:

定義對象間的一種一對多(變化)的依賴關系,以便當一個 對象(Subject)的狀態(tài)發(fā)生改變時,所有依賴于它的對象都 得到通知并自動更新

動機:

在軟件構建過程中,我們需要為某些對象建立一種“通知依賴關系”——一個對象(目標對象)的狀態(tài)發(fā)生改變,所有的依賴對象(觀察者對象)都將得到通知。如果這樣的依賴關系過于緊密, 將使軟件不能很好地抵御變化。

使用面向對象技術,可以將這種依賴關系弱化,并形成一種穩(wěn)定的依賴關系。從而實現(xiàn)軟件體系結構的松耦合

總結:

  • 使用面向對象的抽象,Observer模式使得我們可以獨立地改變目標與觀察者,從而使二者之間的依賴關系達致松耦合。
  • 目標發(fā)送通知時,無需指定觀察者,通知(可以攜帶通知信息作為參數(shù))會自動傳播。
  • 觀察者自己決定是否需要訂閱通知,目標對象對此一無所知。
  • Observer模式是基于事件的UI框架中非常常用的設計模式,也是 MVC模式的一個重要組成部分。

實踐案例

假如現(xiàn)有有一個業(yè)務場景,我們需要寫一個視頻檢測器,該檢測器會使用圖像分割模型對輸入的視頻流進行檢測,如果監(jiān)測到畫面有人,那么需要做針對人的具體操作(比如將人框出來,比如將人截取出來),如果檢測到畫面中有汽車,也會做具體操作(比如將汽車涂為紅色)等等。
這樣一個業(yè)務場景普通的寫法,我們很容易想到,讀取視頻流,然后對每一幀圖像檢測,然后寫if else
if 檢測到人 {…}
else if 檢測到汽車 {…}
else if 檢測到天空 {…}
這樣的實現(xiàn)方式可以滿足需求,但是并不滿足我們的設計原則
這是一個緊耦合的做法,你的檢測器要依賴于其他的視頻操作類,不符合我們的依賴倒置原則
我們可以將操作類抽象成一個接口,然后再需要操作的時候,調用接口。這樣就解決了這個問題
不過還有一點,在這個業(yè)務場景中,操作類有不同的操作,也就是說需要多個操作
因為我們進一步抽象
我們寫一個操作基類,然后再寫多個操作類1,操作類2,都繼承基類
到這一步,其實觀察者模型就出來了

觀察者模型:
我們可以把視頻看作一個被觀察者,檢測到的結果(人、汽車、樹木等),這些相當于信息通知,給誰通知呢?給那些具體的操作類通知,所以我們可以把對人操作的類、對汽車操作的類這些看作觀察者。
被觀察者將消息發(fā)送給觀察者,觀察者根據(jù)消息來做不同的操作(多態(tài))
并且在這個過程中,支持觀察者自主選擇是否訂閱消息。
在這里插入圖片描述

代碼實現(xiàn)以及注釋:

#include <string>
#include <iostream>
#include <list>
using namespace std;class Observer {// 抽象類(接口)
public:virtual void handleVideo(string detectInfo) = 0;virtual ~Observer() {}
};class Observer1 : public Observer {
public:virtual void handleVideo(string detectInfo) {cout << "截取人" << endl;}
};class Observer2 : public Observer {
public:virtual void handleVideo(string detectInfo) {cout << "截取汽車" << endl;}
};class VideoDetecter {string m_filePath;string m_fileName;list<Observer*>  m_observerList; // 抽象通知機制,支持多個觀察者public:VideoDetecter(string filePath, string fileName) {m_filePath = filePath;m_fileName = fileName;}void detect() {//1.讀取視頻流cout << "讀取視頻流:" << m_filePath + m_fileName << endl;//2.循環(huán)每一幀處理int frameNum = 10;for (int i = 0; i < frameNum; i++) {//假設對第i幀圖像處理得到識別結果 結果記作 detectInfostring detectInfo = "識別結果";sendNotify(detectInfo);//發(fā)送通知}}void addObserver(Observer* observer) { //添加觀察者m_observerList.push_back(observer);}void removeObserver(Observer* observer) { //移除觀察者m_observerList.remove(observer);}
protected:virtual void sendNotify(string detectInfo) {list<Observer*>::iterator itor = m_observerList.begin();while (itor != m_observerList.end()) {(*itor)->handleVideo(detectInfo); //不同觀察者對通知做出響應itor++;}}
};int main() {string filePath = "/root/home/videoPath/";string fileName = "001.mp4";Observer* observer;VideoDetecter detecter(filePath, fileName);Observer1 ob1;Observer2 ob2;detecter.addObserver(&ob1);detecter.addObserver(&ob2);detecter.detect();detecter.removeObserver(&ob1);detecter.removeObserver(&ob2);//detecter.detect();}
http://www.risenshineclean.com/news/35652.html

相關文章:

  • wordpress不能啟動怎么解決西安百度快照優(yōu)化
  • 電商網(wǎng)站如何備案google付費推廣
  • 現(xiàn)在網(wǎng)絡推廣方式衡陽百度seo
  • 宜昌市水利建設工程協(xié)會網(wǎng)站軟文營銷文章300字
  • b2b是什么網(wǎng)站新網(wǎng)站如何推廣
  • 研學網(wǎng)站平臺建設方案市場調研方法有哪些
  • 電子商務網(wǎng)站建設的實訓報告網(wǎng)絡營銷企業(yè)案例分析
  • 網(wǎng)站留言板漏洞百度手機瀏覽器
  • bt網(wǎng)頁游戲網(wǎng)站網(wǎng)絡平臺營銷
  • 瑞典網(wǎng)站后綴濟南seo網(wǎng)站優(yōu)化公司
  • 網(wǎng)站做擔保交易網(wǎng)頁設計首頁制作
  • 常德市做網(wǎng)站的公司百度廣告關鍵詞價格表
  • 全國物流信息網(wǎng)安徽網(wǎng)站seo公司
  • 成都 網(wǎng)站建設培訓semen
  • 網(wǎng)站建設試題以及答案鞍山網(wǎng)絡推廣
  • 藝麟盛世可以做網(wǎng)站推廣嗎鄭州seo優(yōu)化
  • 做配件出口上什么網(wǎng)站搜索引擎優(yōu)化的主要內容
  • 網(wǎng)站seo 工具steam交易鏈接怎么獲取
  • 怎么做交易貓釣魚網(wǎng)站短視頻剪輯培訓班速成
  • 臨安做網(wǎng)站的公司有哪些搜狗網(wǎng)
  • 用word 做網(wǎng)站seo推廣軟件排名
  • 做電影網(wǎng)站需要官網(wǎng)seo哪家公司好
  • 泉州網(wǎng)站設計平臺北京網(wǎng)站優(yōu)化站優(yōu)化
  • 響水專業(yè)做網(wǎng)站的公司已備案域名30元
  • 電子商務的概念和特點是什么成都高新seo
  • 成都專業(yè)網(wǎng)站排名推廣數(shù)字營銷成功案例
  • 代網(wǎng)站建設人民網(wǎng) 疫情
  • 公司做網(wǎng)站需準備資料win7系統(tǒng)優(yōu)化
  • wordpress網(wǎng)站響應時間太長百度教育app
  • 響應網(wǎng)站seo優(yōu)化網(wǎng)站源碼