2014-10-19 138 views
7

我一直在研究兩者,但找不到任何真正的區別,我錯過了什麼? 在網上有人說觀察者應該只處理一個事件,而反應堆很多 - 但我不認爲這是真正的區別,因爲反應堆可以像很多觀察者一樣被看到。有沒有什麼區別,或者新的名稱Reactor比Observer更酷?觀察者模式vs電抗模式

感謝, 卡羅

+2

我同意在許多方面反應是觀察者模式的另一個名稱 – kenny 2014-10-19 19:53:51

回答

7

Reactor Pattern利用其解複用請求,並分派到正確的處理程序中介服務處理器。

Observer Pattern要求「觀察員」註冊主題,然後在發生事件時將通知推送給所有註冊的觀察者。

重要的區別是反應堆模式處理派遣與中央請求處理程序,而觀察者模式讓消費者直接與生產者交談。

實際上,觀察者模式可以爲動態註冊和註銷消費者提供更大的靈活性。在非常高的併發應用程序中,它還提供了沒有單箇中間調度程序瓶頸吞吐量的好處。 Lapsed Listener Problem也是相關的,當消費者忘記在他們不想被通知時忘記註冊該主題時發生。在垃圾收集語言中,這通常會阻止GC收集這些事件處理程序,從而泄漏它們以及它們持有的任何引用。通常不使用動態配準的反應堆模式通常不可能(儘管理論上它可能)。

+1

反應器解決**服務器相當具體的問題**:「服務器應用程序必須將每個傳入請求解複用並分派給其相應的服務提供者。觀察者是將觀察者與觀察者分離的更普遍模式。 – Fuhrmanator 2014-10-21 13:44:34