觀察者模式和發(fā)布訂閱模式主要區(qū)別在于:中間代理。
觀察者模式:觀察者(Observer),被觀察者(Subject)。
在觀察者模式中,被觀察對(duì)象和觀察者之間存在直接關(guān)聯(lián)。觀察者需要直接注冊(cè)(訂閱)到主題上,在主題狀態(tài)改變時(shí)接收通知。因此觀察者與主題之間的耦合度較高。
一個(gè)被觀察對(duì)象可以通知多個(gè)觀察者,但每個(gè)觀察者只關(guān)注一個(gè)被觀察對(duì)象。是一對(duì)一或多對(duì)一通信。
發(fā)布-訂閱模式:訂閱者(Subscriber,類(lèi)似于觀察者),發(fā)布者(Publisher,類(lèi)似于被觀察者),消息代理(Broker)。
發(fā)布-訂閱模式在觀察者模式上引入一個(gè)中間媒介(通常稱(chēng)為消息代理或事件總線)來(lái)解耦發(fā)布者和訂閱者。發(fā)布者和訂閱者之間沒(méi)有任何直接聯(lián)系,通過(guò)消息代理進(jìn)行通信。
發(fā)布者發(fā)布消息到特定的主題或頻道。消息代理負(fù)責(zé)管理和分發(fā)消息,維護(hù)主題列表和訂閱者列表。訂閱者訂閱感興趣的主題或頻道,并在有新消息時(shí)接收通知。
一個(gè)發(fā)布者可以向多個(gè)訂閱者發(fā)送消息,是一對(duì)多通信。訂閱者可以在運(yùn)行時(shí)動(dòng)態(tài)地訂閱或取消訂閱某個(gè)主題。每個(gè)訂閱者都可以獨(dú)立處理消息,互不影響。
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)和企業(yè)公眾號(hào)(微信號(hào):cdebyte)進(jìn)行了解,也可以直接撥打400電話咨詢(xún)技術(shù)專(zhuān)員!
相關(guān)閱讀:
1、【教程】PLC利用函數(shù)塊連接MQTT訂閱消息(一)
2、【教程】PLC利用函數(shù)塊連接MQTT訂閱消息(二)
3、串口服務(wù)器快速接入MQTT3.1協(xié)議服務(wù)器鏈接配置教程