1. 程式人生 > >觀察者模式與釋出/訂閱模式區別

觀察者模式與釋出/訂閱模式區別

在翻閱資料的時候,有人把觀察者(Observer)模式等同於釋出(Publish)/訂閱(Subscribe)模式,也有人認為這兩種模式還是存在差異,而我認為確實是存在差異的,本質上的區別是排程的地方不同。

觀察者模式

比較概念的解釋是,目標和觀察者是基類,目標提供維護觀察者的一系列方法,觀察者提供更新介面。具體觀察者和具體目標繼承各自的基類,然後具體觀察者把自己註冊到具體目標裡,在具體目標發生變化時候,排程觀察者的更新方法。

比如有個“天氣中心”的具體目標A,專門監聽天氣變化,而有個顯示天氣的介面的觀察者B,B就把自己註冊到A裡,當A觸發天氣變化,就排程B的更新方法,並帶上自己的上下文。

釋出/訂閱模式

比較概念的解釋是,訂閱者把自己想訂閱的事件註冊到排程中心,當該事件觸發時候,釋出者釋出該事件到排程中心(順帶上下文),由排程中心統一排程訂閱者註冊到排程中心的處理程式碼。

比如有個介面是實時顯示天氣,它就訂閱天氣事件(註冊到排程中心,包括處理程式),當天氣變化時(定時獲取資料),就作為釋出者釋出天氣資訊到排程中心,排程中心就排程訂閱者的天氣處理程式。

總結

1. 從兩張圖片可以看到,最大的區別是排程的地方。

雖然兩種模式都存在訂閱者和釋出者(具體觀察者可認為是訂閱者、具體目標可認為是釋出者),但是觀察者模式是由具體目標排程的,而釋出/訂閱模式是統一由排程中心調的,所以觀察者模式的訂閱者與釋出者之間是存在依賴的,而釋出/訂閱模式則不會。


相關推薦

觀察模式釋出/訂閱模式區別

在翻閱資料的時候,有人把觀察者(Observer)模式等同於釋出(Publish)/訂閱(Subscribe)模式,也有人認為這兩種模式還是存在差異,而我認為確實是存在差異的,本質上的區別是排程的地方不同。 觀察者模式 比較概念的解釋是,目標和觀察者是基類,目標提供維護觀察

觀察模式釋出/訂閱模式區別

        不管是維基百科還是百度百科,搜尋觀察者模式,都會發現觀察者模式的定義是觀察者模式(有時又被稱為釋出/訂閱模式),即一個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。此種模式通常被用來實

觀察模式釋出/訂閱模式

觀察者模式本質上是一種物件行為模式,而 釋出/訂閱模式本質上是一種架構模式,強調元件的作用。 1. 觀察者模式 觀察者模式是一種設計模式,其中一個物件(稱為主體)根據物件(觀察者)維護一個物件列表,自動通知他們對狀態的任何更改。 意圖:定義物件間的一種一對多的依賴關係,

觀察模式釋出訂閱模式區別

之前一直對觀察者模式和釋出訂閱模式的區別理解不深,正好這段時間在看vue原始碼的分析,vue資料雙向繫結也用到了釋出訂閱模式,於是

觀察模式 vs 釋出訂閱模式

原文地址:zhuanlan.zhihu.com/p/51357583 作者:柳樹 有一回面試,面試官問: 觀察者模式,和釋出訂閱模式,有什麼區別? 我腦海中立刻閃現了《Head First設計模式》裡講的: Publishers + Subscribers = Observe

觀察模式釋出/訂閱模式

  觀察者模式提供了避免元件之間緊密耦合的另一種方法,它將觀察者和被觀察者的物件分離開。在該模式中,一個物件通過新增一個方法(該方法允許另一個物件,即觀察者註冊自己)使本身變得可觀察。當可觀察的物件更改時,它會將訊息傳送到已註冊的觀察者。這些觀察者收到訊息後所執行的操作與可觀

觀察模式(Observer Pattern,物件行為型模式釋出-訂閱模式 Publish/Subscribe Pattern)

意圖 通知狀態變化 定義物件間的一對多的依賴關係,當一個物件的狀態發生變化時,所有依賴它的物件都得到通知並被自動更新,由抽象類或介面實現。 推模式:目標角色複雜,並且觀察者角色進行更行時必須得到一些具體的變化資訊 拉模式:目標角色簡單 適用性 在

Java設計模式觀察模式釋出/訂閱模式

1、概述 觀察者模式又稱為釋出/訂閱(Publish/Subscribe)模式 觀察者設計模式涉及到兩種角色:主題(Subject)和觀察者(Observer) (1)Subject模組 Sub

訊息佇列中點對點模型釋出/訂閱模式區別

背景知識 JMS一個在 Java標準化組織(JCP)內開發的標準(代號JSR 914)。2001年6月25日,Java訊息服務釋出JMS 1.0.2b,2002年3月18日Java訊息服務釋出 1.1.  Java訊息服務(Java Message Service,JMS)

觀察模式釋出訂閱模式

1.觀察者模式的背後,總的想法是在應用程式中增強鬆耦合性。 2.觀察者也被叫做訂閱者,它指向被觀察的物件,即被觀察者。當事件發生時,被觀察者就會通知觀察者。 3.觀察者的使用場合 當一個物件的改變需要同時改變其他物件,並且它不知道有多少物件需要改變的時候。

23種設計模式 之 Observer模式釋出-訂閱模式) C語言

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

觀察釋出訂閱模式區別

       Pub-Sub  Pattern          在“釋出者-訂閱者”模式中,稱為釋出者的訊息傳送者不會將訊息程式設計為直接傳送給稱為訂閱者的特定接收者。這意味著釋出者和訂閱者不知道彼此的存在。存在第三個元件,稱為代理或訊息代理或事件匯流排,它由釋出者和訂閱者都知道,它過濾所有傳入的訊息並相

vue非父子元件間的傳值 Bus/匯流排機制/釋出訂閱模式/觀察模式

Bus/匯流排機制/釋出訂閱模式/觀察者模式 我們需要將一個元件的子元件的資料傳遞給另一個元件的子元件 ① 將Vue的例項賦值給Vue.prototype.bus,這樣只要我們之後呼叫new Vue()或者建立元件的時候,每一個元件上都會有Bus這個屬性,因為每一個元件或者Vue這個例項

那些年 你需要解決的觀察模式/釋出-訂閱模式(ES6語法)

在筆試和一些面試經驗交流的帖子中程序出現訂閱者模式,想著自己還不是很清楚,所以得解決,但是我們的目的應該不僅僅是對付筆試和麵試,應該瞭解這個模式的思想:鬆散耦合程式碼形式!更多的大家看別的描述吧,會比我更清楚,這裡也不累述,只是加入自己更加通俗的理解:我們的_events

設計模式——觀察釋出訂閱模式

最近在學習設計模式,本文就同一個例子對觀察者和釋出訂閱進行探討。觀察者模式    比較概念的解釋是,目標和觀察者是基類,目標提供維護觀察者的一系列方法,觀察者提供更新介面。具體觀察者和具體目標繼承各自的基類,然後具體觀察者把自己註冊到具體目標裡,在具體目標發生變化時候,排程觀

Java中的設計模式 - 觀察模式【又叫:釋出/訂閱模式

文章目錄 Java中的設計模式 - 觀察者模式【又叫:釋出/訂閱模式】 1、觀察者模式是為了解決什麼問題 2、核心邏輯 3、優點 4、缺點 5、應用場景

設計模式觀察模式(釋出/訂閱模式:publish/subscribe)

定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件.這個主題物件在狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己 觀察者模式的關鍵物件是主題Subject和觀察者Observer.一個Subject可以有任意數目依賴它的Observer, 一

設計模式--觀察模式(釋出訂閱模式)

類圖 定義 定義物件間一種一對多的依賴關係,使得每當一個物件改變狀態,則所有依賴於它的物件都會得到通知並被自動更新 優點 - 觀察者和被觀察

SpringBoot事件監聽機制及觀察模式/釋出訂閱模式

[toc] ## 本篇要點 - 介紹觀察者模式和釋出訂閱模式的區別。 - SpringBoot快速入門事件監聽。 ## 什麼是觀察者模式? 觀察者模式是經典行為型設計模式之一。 在GoF的《設計模式》中,觀察者模式的定義:**在物件之間定義一個一對多的依賴,當一個物件狀態改變的時候,所有依賴的物件都會自

訊息佇列模式:點對點 釋出訂閱

Java訊息服務(Java Message Service,JMS)應用程式介面是一個Java平臺中關於面向訊息中介軟體(MOM)的API,用於在兩個應用程式之間,或分散式系統中傳送訊息,進行非同步通訊。 點對點與釋出訂閱最初是由JMS定義的。這兩種模式主要區別或解決的問題