使用IoC容器时在哪里注册观察者?

时间:2017-06-13 14:38:38

标签: inversion-of-control observable ioc-container dry

在我目前的应用程序中,我使用'selfmade'Observable类来实现观察者模式。观察者(实现接口)可以监听某些事件。

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

我看到的方法是:

A)将观察者注入观察者 构造函数不应该进行实际工作,但即使使用方法或字段注入,这也会使观察者与观察者联系起来。如果反过来也是如此。

B)创建一个可观察的工厂并在那里进行 在这种情况下,创建observable取决于几个观察者的实现。

C)由工厂创建观察员并在那里进行 虽然对于我来说这对于耦合来说似乎是最好的,但对于DRY来说却很糟糕。在某些情况下,工厂最终会成为观察者的字段和构造函数的副本,加上可观察的,加上注册的一行代码。

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

1 个答案:

答案 0 :(得分:0)

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

我一直在使用Resolve()。有了这个,我会收到一个Observer,就像它绑定到容器一样。

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