一尘不染

Java如何避免依赖注入构造函数的疯狂?

java

我发现我的构造函数开始看起来像这样:

public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... )

不断增加的参数列表。由于“容器”是我的依赖项注入容器,所以为什么我不能这样做:

public MyClass(Container con)

每堂课?不利之处是什么?如果执行此操作,则感觉就像我在使用精美的静态方法。请分享你对IoC和依赖注入疯狂的想法。


阅读 574

收藏
2020-02-28

共1个答案

一尘不染

正确的是,如果将容器用作服务定位器,则它或多或少是光荣的静态工厂。由于种种原因,我认为这是一种反模式。

构造函数注入的奇妙好处之一是,它使违反单一责任原则的行为显而易见。

发生这种情况时,就该重构为Facade Services了。简而言之,创建一个新的,更粗粒度的接口,以隐藏你当前需要的一些或所有细粒度依赖项之间的交互。

2020-02-28