我一直在各种上下文中使用Dojo,从来没有找到关于事件与主题的很好的解释。我使用这两种机制的理解如下:Dojo:主题vs事件,应考虑哪些设计考虑因素?
- 两者都是事件或更一般的消息机制。
- 两者的工作方式差不多,因为您通过设置回调来订阅主题/事件。
- 事件与对象/小部件紧密耦合,因为您需要实际的对象或小部件实例来注册特定事件的侦听器。
- 另一方面,主题机制提供了更加分离的方法,因为您可以在不知道哪个组件正在发布主题的情况下订阅任何主题,甚至不知道该主题是否会发布。
在使用Dojo开发定制窗口小部件时,我曾经多次使用这种方法,让它们发布到某些主题。其他组件会订阅这些主题并做出适当的反应。但是,这导致很难遵循的代码,因为当你找到一个订阅特定主题的代码时,你开始想知道谁正在发布到该主题,反之亦然。目前,我倾向于让自定义小部件提交事件并让控制器监听这些事件并将它们分派给其他应对这些事件作出反应的小部件。
所以在第一种方法中,主题机制是小部件之间的粘合剂,但它是分散的,这使得难以在我的经验中维护代码的长期。在第二种方法中,控制器类(遵循MVC模式)是胶水,它集中了事件处理。
我很想知道这是否是对这两种机制的正确理解。在选择其中一种(或混合它们)时,我应该考虑任何设计考虑因素。任何关于该主题的精心讨论的指针都会受到赞赏。我一直在寻找:http://dojotoolkit.org/documentation/tutorials/1.9/events/,但主要描述了这两种机制如何工作,但对如何构建复杂应用程序没有深入了解。
嗨Johannes,欢迎来到Stack Overflow。关于你的答案的一点建议:当这个链接可以回答这个问题时,最好在这里包含答案的基本部分,并提供参考链接。如果链接页面更改,则仅链接答案可能会失效。有关更多详情,请参阅[答案]。 –