我发现我的构造函数开始看起来像这样:
public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... )
不断增加的参数列表。由于“容器”是我的依赖项注入容器,所以为什么我不能这样做:
public MyClass(Container con)
每堂课?不利之处是什么?如果执行此操作,则感觉就像我在使用精美的静态方法。请分享你对IoC和依赖注入疯狂的想法。
正确的是,如果将容器用作服务定位器,则它或多或少是光荣的静态工厂。由于种种原因,我认为这是一种反模式。
构造函数注入的奇妙好处之一是,它使违反单一责任原则的行为显而易见。
发生这种情况时,就该重构为Facade Services了。简而言之,创建一个新的,更粗粒度的接口,以隐藏你当前需要的一些或所有细粒度依赖项之间的交互。