当前位置: 首页 > 知识库问答 >
问题:

GWT举办活动巴士的动机

齐宗清
2023-03-14

我正在GWT中创建一个类似MVP的应用程序。

  • 有多个面板,每一个都是随时可见的。
  • 每个面板都有一个Presenter,并且有一个AppController位于所有Presenter之上。
  • 有一些应用程序级别的事件出现在一个演示者中,但对其他演示者有影响。
  • 为此建议的架构似乎涉及事件总线。然而,我不确定我是否看到了比更简单的东西更有优势。
  • 特别是,简单地允许AppController(并且只有AppController)从任何Presenter订阅事件不是更简单吗?然后AppController可以告诉每个Presenter在给定事件的情况下该做什么。
  • “事件总线”似乎是一个准全局变量。但是如果您可以使用更精确定义的方法(即AppController在每个Presenter上调用的方法)完成同样的事情,那不是更好吗?

更确切地说,为什么要引入事件总线,而不是简单地让事件“上升”到适当的决策层?对我来说,这似乎是MVP概念最直接的扩展,并且它不需要事件总线的新概念。我不明白引入事件总线是为了解决什么问题。

共有2个答案

常波鸿
2023-03-14

你提出的方法很好,但有一个很大的缺点:当你的应用程序增长时,它需要大量的代码。

这个演讲是关于Android的,但GWT的论点也成立。

另请参阅Google I / O 2009的着名演示文稿,其中明确讨论了使用事件总线来对抗意大利面条代码(如果您还没有的话,则必须观看)。

最后,这篇博客文章讨论了JS中的观察者与中介模式:在GWT中,观察者模式由事件处理程序实现,而中介模式由事件总线实现。这是tl;医生:«

裴令秋
2023-03-14

事件总线的优点是代码的分离。

您可以将自定义事件发送到总线,不再需要关心您的事件。每个演示者只订阅该事件,它真的需要知道这些事件。这将导致更简洁的代码,因为您不必创建一个必须知道所有演示者才能将事件委托给他们的调度程序。

在我看来,eventbus是一个非常好的东西,可以使代码干净且易于理解。

 类似资料:
  • 我很难理解在GWT中使用事件总线概念的好处。我知道它是怎么做的,但我不明白为什么它有帮助。 我举个例子: 为了将事件总线功能添加到上面的代码中,我们必须引入更多的代码: 1) 创建扩展event的事件类(实现2个方法) 2)为事件处理程序创建接口,其中dosomething()将是抽象的 3)实现接口 4)事件发生的类必须实现HasHandler接口、intreoduce HandlerManag

  • 我们正在使用spring云配置服务器。Spring配置客户端使用Spring控制总线(RabbitMQ)获取更新。 看起来每个配置客户端实例都会创建一个连接到'spring.cloud.bus'交换的队列。 对有多少应用程序实例可以连接到“spring.cloud.bus”交换有任何可伸缩性限制? 我想RabbitMQ可以扩展来处理这个问题。 寻找这方面的指导方针。 许多感谢,

  • 我想看看如何在Seaborn中使用条形图来显示数据框中的值,而不是图形中的值 1) 我希望在一个数据帧中显示一个字段的值,同时绘制另一个字段的图形。例如,在下面,我画的是“小费”,但我想把“总账单”的价值放在每个横条的中心位置(即周五上方325.88,周六上方1778.40,等等) 2) 有没有一种方法可以缩放条的颜色,最低的“total_bill”值的颜色最浅(在本例中为星期五),最高的“tot

  • 一、手动活动简介 手动活动可以帮助运营人实现针对全部或细分用户群的消息推送。 常见的使用场景包括: 向用户发送各类通知关怀:比如节日关怀; 结合市场活动使用:比如在「6.18」、「双十一」等市场活动的预热期向用户发送活动通知; 二、手动活动功能及使用 1. 手动活动列表 创建的手动活动都会展示在列表中,包含发送用户范围、成功人数、发送开始时间等信息。 2. 创建手动活动(创建信息推送) 点击右上角

  • 一、自动活动简介 自动活动可以帮助营销或运营人员实现自动化的消息触达。并且这种消息发送是由特定的用户行为或行为序列触发的,非常适合做各种场景化的个性化营销或运营。 二、功能及使用 1. 自动活动列表 创建的活动会展示在列表中,一目了然的展示活动状态、目标用户群、活动描述以及详细的数据信息。 2. 创建自动活动 在智能触达页面右上方点击「+新自动活动」按钮创建自动活动 2.1 创建触发类型活动 触发

  • 我有一个应用程序的屏幕小部件。单击此小部件时,会打开“DeveloperMode”设置。但在一些设备上,应用程序因以下消息而崩溃。 引起:android.util.AndroidRuntimeExcture:从活动上下文外部调用starActive()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗? 我曾尝试使用addFlags和setFlags添加这一行,但仍然存在相同