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

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

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

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

public MyClass(Container con)

为每个班级? 有什么缺点? 如果我这样做,感觉就像我正在使用一个荣耀的静态。 请分享你对IoC和依赖注入疯狂的想法。


你是对的,如果你使用容器作为服务定位器,它或多或少是一个美化的静态工厂。 由于很多原因,我认为这是一种反模式。

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

当发生这种情况时,是时候重构Facade Services了。 简而言之,创建一个新的,更粗粒度的界面,隐藏您当前需要的部分或全部细粒度依赖之间的交互。


我认为你的班级建造者不应该对你的国际奥委会集装箱期间有所参考。 这代表了你的类和容器之间不必要的依赖关系(IOC依赖的类型试图避免!)。


传递参数的难度不是问题。 问题是你的班级做得太多了,应该分解得更多。

依赖注入可以作为类的过早预警,特别是因为传递所有依赖关系的痛苦日益增加。

链接地址: http://www.djcxy.com/p/77783.html

上一篇: How to avoid Dependency Injection constructor madness?

下一篇: How to explain dependency injection to a 5