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

问题:

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

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

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

public MyClass(Container con)

每班什么是缺点?如果我这样做,我觉得我正在使用一个美化的静态。请分享您对IoC和Dependency Injection疯狂的想法。

回答:

你是对的,如果你使用容器作为服务定位器,它或多或少是一个美化的静态工厂。由于很多原因I consider this an anti-pattern
构造函数注入的好处之一是它违反Single Responsibility Principle显而易见。
发生这种情况,现在是refactor to Facade Services的时候了。简而言之,创建一个新的更多的粗粒度界面,隐藏您当前需要的一些或所有细粒度的依赖关系之间的交互。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to avoid Dependency Injection constructor madness?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

80 + = 83