2017-06-13 58 views
0

在我当前的应用程序中,为了实现观察者模式,我使用了“自制”的Observable类。观察者(实现一个接口)可以听某些事件。何时使用IoC容器注册观察员?

我将越来越多的项目切换到使用IoC容器,但是我没有找到在代码中注册观察者的好地方。

的方法可以做到这一点,我看到的是:

A)注射到观察的观察者。
构造函数不应该做实际工作,但即使使用方法或字段注入,也会将观察者与observable耦合。如果是相反的话,情况也是如此。 B)创建一个可观察的工厂并在那里执行。
在这种情况下,创建observable取决于几个观察者的实现。

C)按工厂创建观察者并在那里执行。
虽然这对我来说似乎是最好的耦合,但对于DRY来说,结果不好。在某些情况下,工厂最终会成为观察者的字段和构造函数的副本,再加上可观察值以及注册的一行代码。

有没有办法以一种干净的方式处理这种注册?如果不是的话,是否有一些令人信服的论据来对其他人采用某种方式?

回答

0

解决方案发现了Resolve()和Instantiate()方法之间的区别。

我一直在使用Resolve()。这样,我就会收到一个观察者的方式,它被绑定到容器上。

但是,Instantiate()不关心类如何绑定到容器。它创建类的标准方式,但仍注入依赖关系。所以这可以在工厂内用于观察者。