Eventbus更像是调解员还是观察者?根据谷歌的说法, “eventbus mediator”获得2.430点击率 “eventbus观察者”获得3.850次点击。
根据描述,他们都会匹配我想做的事情(调解员甚至更多)。 那么eventbus实现了一个特定的模式,还是我自己说的呢?
答案 0 :(得分:13)
通常,给定的代码片段本质上不是一种模式或另一种模式的示例。这就是为什么它们被称为“模式”(而不是“实施技术”)。很多软件看起来像一个模式,但也类似于另一个 - 这很好。最好不要为了模式而遵守模式,而是将它们用作讨论体系结构的共享词汇。
EventBus就是这样一个工具。我在考虑类似Observer的情况下编写它,但是如果你适当地构建你的应用程序,它可以扮演类似Mediator的角色。
答案 1 :(得分:11)
EventBus的一般用法是触发事件。使用Observer这个词更适合。观察者模式使用事件或消息来通知关于被观察(改变)的对象的感兴趣对象的变化。 Mediator也试图解耦这两个实现,但在某种意义上它比Observer更具体,它可以知道所有关于这两个对象/接口的东西,并且可以作为粘合剂使这两个实现工作。 观察者并不声称知道内部甚至界面。所有它知道或关心的是当事件发生时,它需要通知感兴趣的对象。
Mediator可以是特定于场景的设置,而Observer可能更通用。
EventBus几乎总是在应用程序范围内的单例,我肯定会将EventBus归类为使用Observer,因为它在大多数情况下的真实意图是在运行时的各种模块/对象之间进行全局消息传递。
答案 2 :(得分:4)
维基百科:介体模式的本质是“定义一个封装一组对象如何交互的对象”
EventBus不会这样做。
EventBus也不是观察者模式,因为如果您有N个对象并且想要在所有对象之间进行通信,那么如果您使用观察者模式但是只有一个全局EventBus足以执行相同的工作,则需要N * N个观察者。 / p>
所以EventBus是EventBus模式。
答案 3 :(得分:3)
我说一个典型的事件总线使用这两种模式:
答案 4 :(得分:0)
由于前言是“a [...]发布/订阅API”,我会选择观察者。