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

觀察者和釋出訂閱模式的區別

       Pub-Sub  Pattern

         在“釋出者-訂閱者”模式中,稱為釋出者的訊息傳送者不會將訊息程式設計為直接傳送給稱為訂閱者的特定接收者。這意味著釋出者和訂閱者不知道彼此的存在。存在第三個元件,稱為代理或訊息代理或事件匯流排,它由釋出者和訂閱者都知道,它過濾所有傳入的訊息並相應地分發它們。換句話說,pub-sub是用於在不同系統元件之間傳遞訊息的模式,而這些元件不知道關於彼此身份的任何資訊。經紀人如何過濾所有訊息?實際上,有幾個訊息過濾過程。最常用的方法有:基於主題和基於內容的。

        簡而言之,這兩種模式之間的主要區別可以如下所示:

 
  1. 在Observer模式中,Observers知道Subject,同時Subject還保留了Observers的記錄。然而,在釋出者/訂閱者中,釋出者和訂閱者不需要彼此瞭解。他們只是在訊息佇列或代理的幫助下進行通訊。
  2. 在Publisher / Subscriber模式中,元件是鬆散耦合的,而不是Observer模式
  3. 觀察者模式主要以同步方式實現,即當某些事件發生時,Subject呼叫其所有觀察者的適當方法。的發行者/訂閱者在一個實施大多非同步方式(使用訊息佇列)。
  4. 觀察者模式需要在單個應用程式地址空間中實現。另一方面,釋出者/訂閱者模式更像是跨應用程式模式。

         儘管這些模式之間存在差異,但有些人可能會說釋出者 - 訂閱者模式是觀察者模式的變體,因為它們之間存在概念上的相似性,但並不是一樣的,歡迎拍磚! 

         參考文件:https://hackernoon.com/observer-vs-pub-sub-pattern-50d3b27f838c