何时使用Pub / Sub vs Dependency Injection的最佳实践

时间:2014-02-15 16:29:21

标签: javascript events dependency-injection

在大多数现代JS框架中,松散耦合UI组件的最佳实践是Pub / Sub的一些实现。

我遇到的问题是这不会使调试变得更加困难,而依赖注入可以实现相同的结果(松散耦合)?

例如,我的组件在单击时应打开一个对话框。这需要发生,否则UI将显示为已损坏。对我来说,让组件显式调用某些对话框服务似乎更具可读性。在野外,我看到这个问题在pub sub中得到了更多解决,所以也许我错过了一些东西。

当同时使用这两种方法时,哪些地方可以在事件触发事件或使用注入服务实现该操作时绘制线条?

1 个答案:

答案 0 :(得分:5)

Pub-sub适用于应用程序范围内的事件,其中潜在订阅者的数量可能会在发生事件时发生变化或未知。

注入总是设置两者之间的关系,当然,你可以创建装饰器/复合材料并注入由简单对象组成的复合对象,但是当你开始这样做时就会变得混乱。

以树和列表为例。单击节点时,应重建列表。听起来像注射。

但是后来你意识到一些节点会触发其他动作,标题会更新,流程会在后台触发等。在许多独立订阅者中举办活动并处理它会更容易。

我会说当你组成一个视图和一个控制器或一个视图及其后备存储时,注入可以很好地通过层。 Pub-sub在同一层中的对象之间工作得很好,例如,不同的独立控制器交换消息并做出相应的反应。