Eventbus更像中介者还是观察者?据Google数据,"eventbus mediator"有2,430个搜索结果,而"eventbus observer"则有3,850个搜索结果。
从描述来看,它们都符合我所尝试的内容(中介者甚至更符合)。 那么,Eventbus是否实现了特定的模式,或者由我来决定它是哪种模式?
Eventbus更像中介者还是观察者?据Google数据,"eventbus mediator"有2,430个搜索结果,而"eventbus observer"则有3,850个搜索结果。
从描述来看,它们都符合我所尝试的内容(中介者甚至更符合)。 那么,Eventbus是否实现了特定的模式,或者由我来决定它是哪种模式?
通常情况下,一个特定的代码片段并不固有地属于某种设计模式或另一种。这就是为什么它们被称为“模式”(而不是“实现技术”)的原因。许多软件看起来有点像一种模式,但也类似于另一种--这是好事。最好不要为了模式而遵循模式,而是将它们用作讨论架构的共享词汇。
EventBus是这样的工具。我编写它时考虑到了类似Observer的情况,但如果你适当地构建你的应用程序,它可以扮演中介者的角色。
我会说,一个典型的事件总线利用了这两种模式:
维基百科:中介者模式的本质是“定义一个封装了一组对象如何交互的对象”
EventBus并不完全符合这个模式。
EventBus也不是观察者模式,因为如果你有N个对象并且想要在它们之间进行通信,使用观察者模式需要N*N个观察者,而只需一个全局EventBus即可完成同样的工作。
因此,EventBus是THE EventBus模式。
由于前言中提到了“一个...发布/订阅API”,我会选择Observer。