我有两个服务和一个调解员。如果我希望调解器调用AND并由两个服务调用,我认为我需要使它们彼此依赖。这会导致循环依赖性错误。
Person
取决于Mediator
调用Mediator
方法
Mediator
取决于Person
调用Person
方法
使用事件或承诺的唯一解决方案是什么?我是否正确实施了这种模式?
答案 0 :(得分:3)
这是一个超出角度和javascript imho的问题。
构造调解器以避免循环依赖的标准方法是使用接口,但是javascript没有接口。
在您的情况下,如果您将调解员注入服务,反之亦然,是的,将会出错。
假设您的调解器也是一个服务,解决方法是不要将依赖注入到调解器中,而是在调解器与您需要调解的2个服务一起使用之前初始化调解器。
另一种方法是不使用中介对象,而是使用内置为$ broadcast和$ on的角度的发布者/订阅者模式。 imho,这比调解器模式更加宽松,所以它竖起了大拇指
答案 1 :(得分:1)
只有使用Mediator的服务才能依赖Mediator。发布事件的服务注入Mediator。订阅事件的服务注入Mediator并注册服务中包含的回调。 Mediator不应该依赖于任何一个服务,它应该只包含将发布事件映射到回调引用列表。
请参阅Angular示例中的Mediator我写的here