Sun*_*nny 1 c# oop dependency-injection
如果我正在编写一个包含多个构造函数参数的类,例如:
class A{
public A(Dependency1 d1, Dependency2 d2, ...){}
}
Run Code Online (Sandbox Code Playgroud)
我通常会创建一个"参数持有者"类的类,如:
class AArgs{
public Dependency1 d1 { get; private set; }
public Dependency2 d2 { get; private set; }
...
}
Run Code Online (Sandbox Code Playgroud)
然后:
class A{
public A(AArgs args){}
}
Run Code Online (Sandbox Code Playgroud)
通常,使用DI容器我可以为依赖关系配置构造函数并解析它们,因此当构造函数需要更改时,影响最小.
这被认为是反模式和/或反对这样做的任何论据吗?
这确实为您的依赖项是可选的打开了大门.通过为您的AArgs类提供每个依赖项的属性,有人可以认为他们只需要填写Dependency1,一切都将按预期工作.
通过单独显式列出所有依赖项,您可以明确地了解类的运行所需的内容.如果你有很多依赖项,构造函数很麻烦,那应该被认为是一种气味,因为你的类可能做得太多了.
| 归档时间: |
|
| 查看次数: |
483 次 |
| 最近记录: |