出處: 反應器模式 vs 觀察者模式
反應器模式
是一種為處理服務請求並發提交到一個或者多個服務處理程序的事件設計模式。當請求抵達后,服務處理程序使用解多路分配策略,然后同步地派發這些請求至相關的請求處理程序。
觀察者模式
有時被稱作發布/訂閱模式,觀察者模式定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。
將事件多路分用、將事件分派到各自相應的事件處理程序。
分布式系統中的服務器應用程序必須處理多個向它們發送服務請求的客戶機。然而,在調用特定的服務之前,服務器應用程序必須將每個傳入請求多路分用並分派到各自相應的服務提供者。反應器模式正好適用於這一功能。它允許事件驅動應用程序將服務請求多路分用並進行分派,然后,這些服務請求被並發地從一個或多個客戶機傳送到應用程序。
反應器模式(Reactor pattern)與觀察者模式(Observer pattern)在這個方面極為相似:
當一個主體發生改變時,所有依屬體都得到通知。
不過
觀察者模式與單個事件源關聯,而反應器模式則與多個事件源關聯。
反應器模式 vs 生產者消費者模式
相似點:
從結構上,反應器模式有點類似生產者消費者模式,即有一個或多個生產者將事件放入一個Queue中,而一個或多個消費者主動的從這個Queue中Poll事件來處理;
不同點:
Reactor模式則並沒有Queue來做緩沖,每當一個Event輸入到Reactor 反應器之后,該Reactor 反應器會主動的根據不同的Event類型將其分發給對應的Request Handler來處理。