首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eventbus是中介者模式还是观察者模式?

Eventbus是中介者模式还是观察者模式?
EN

Stack Overflow用户
提问于 2011-05-12 16:03:18
回答 5查看 9.8K关注 0票数 16

Eventbus更像是中介者还是观察者?根据谷歌的数据,"eventbus mediator“的点击量为2.430次,"eventbus观察者”的点击量为3.850次。

从描述上看,它们都符合我试图做的事情(中介者甚至更多一点)。那么eventbus是否实现了特定的模式,或者是由我自己决定的呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-14 12:22:27

通常,给定的一段代码本质上并不是一种模式的示例。这就是为什么它们被称为“模式”(而不是所谓的“实现技术”)。许多软件看起来有点像一种模式,但也类似于另一种--这很好。最好不要为了模式而坚持模式,而是将它们用作讨论体系结构的共享词汇表。

EventBus就是这样一个工具。我在编写它时考虑到了类似观察者的情况,但是如果您适当地构建应用程序,它可以扮演类似于中介者的角色。

票数 18
EN

Stack Overflow用户

发布于 2012-06-23 13:59:43

EventBus的一般用法是激发事件。使用观察者这个词更适合这一点。观察者模式使用事件或消息来通知正在观察(更改)的感兴趣对象的更改。Mediator也试图解耦这两个实现,但从某种意义上说,它比观察者更具体,它可以了解两个对象/接口的所有信息,并作为粘合剂使这两个对象/接口工作。观察者并不声称知道内部结构,甚至不知道接口。它所知道或关心的是当事件发生时,它需要通知感兴趣的对象。

中介器可以是特定于场景的设置,而观察者可以更通用。

EventBus几乎总是应用程序范围内的单例,我肯定会将EventBus归类为使用观察者,因为在大多数情况下,它的真正意图是促进运行时中不同模块/对象之间的全局消息传递。

票数 11
EN

Stack Overflow用户

发布于 2017-05-24 19:04:49

我要说的是,典型的事件总线利用了这两种模式:

  • 事件总线本质上封装了其他对象的通信方式,所以它是注册为事件处理程序/侦听器的mediator
  • objects是观察者(并且它们观察的对象是事件类型和/或产生这些事件的对象,而不是总线本身),所以观察者模式“wikipedia says is E111主要用于实现<代码>E212E113事件处理系统<代码>E214__”(重点是我的),但事件总线本身是<代码>E115而不是<代码>E216本身是观察者。<代码>17<代码>F218
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5975061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档