观察者模式与反应堆模式

时间:2014-10-19 19:47:21

标签: design-patterns

我一直在研究这两种情况,但找不到任何真正的区别,我错过了什么吗? 在网上有人说Observer应该只处理一个事件,而Reactor很多 - 但我不认为这是一个真正的区别,因为Reactor可以像许多Observer一样被看到。有什么不同或更新名称Reactor比Observer更酷吗?

谢谢, 卡罗

1 个答案:

答案 0 :(得分:10)

Reactor Pattern使用中间服务处理程序,该处理程序将请求解复用并分派给正确的处理程序。

Observer Pattern要求"观察员"向主题注册,然后在事件发生时将通知推送给所有注册的观察者。

重要的区别在于Reactor Pattern处理使用中央请求处理程序的调度,而Observer Pattern允许消费者直接与生产者交谈。

实际上,观察者模式可以为动态注册和取消注册消费者提供更大的灵活性。在非常高的并发应用程序中,它还提供了不具有单个中间调度程序瓶颈的吞噬量的好处。 Lapsed Listener Problem也是相关的,当消费者在不再希望收到通知时忘记取消注册时,就会发生这种情况。在垃圾收集语言中,这通常会阻止GC收集这些事件处理程序,从而泄漏它们以及它们持有的任何引用。这通常不适用于反应堆模式,它通常不利用动态注册(尽管理论上可以)。