使用AngularJS Mediator模式避免循环依赖

时间:2013-12-18 18:25:35

标签: angularjs design-patterns mediator

我有两个服务和一个调解员。如果我希望调解器调用AND并由两个服务调用,我认为我需要使它们彼此依赖。这会导致循环依赖性错误。

Person取决于Mediator调用Mediator方法

Mediator取决于Person调用Person方法

使用事件或承诺的唯一解决方案是什么?我是否正确实施了这种模式?

2 个答案:

答案 0 :(得分:3)

这是一个超出角度和javascript imho的问题。

构造调解器以避免循环依赖的标准方法是使用接口,但是javascript没有接口。

在您的情况下,如果您将调解员注入服务,反之亦然,是的,将会出错。

假设您的调解器也是一个服务,解决方法是不要将依赖注入到调解器中,而是在调解器与您需要调解的2个服务一起使用之前初始化调解器。

另一种方法是不使用中介对象,而是使用内置为$ broadcast和$ on的角度的发布者/订阅者模式。 imho,这比调解器模式更加宽松,所以它竖起了大拇指

答案 1 :(得分:1)

只有使用Mediator的服务才能依赖Mediator。发布事件的服务注入Mediator。订阅事件的服务注入Mediator并注册服务中包含的回调。 Mediator不应该依赖于任何一个服务,它应该只包含将发布事件映射到回调引用列表。

请参阅Angular示例中的Mediator我写的here