2014-10-19 140 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