![]() |
1
1
作为一般观察, Dependency Injection is just passing arguments ,因此不需要注释。 那么,选择是通过构造函数传递参数还是作为方法参数传递参数。 有没有办法在两者之间做出选择? 当所涉及的类是不是任何多态API的一部分的具体类时(即,它们既没有从基类继承,也没有实现接口),没有太大的区别。 如果需要依赖项的类实现多态API,情况就会改变。在这种情况下,您可能无法更改方法签名,因为它们已经(由基类或接口)给定了。此外,客户端代码可能无法访问依赖项;通常,依赖注入的要点是将对象组合与对象交互解耦。 在这些情况下(最常见的) 不能 通过方法传递依赖项,因为这会破坏契约(或违反 Dependency Inversion Principle )。那么,通过消除,您将不得不通过构造函数传递依赖关系。 话虽如此,小心 cohesion 和 sequential coupling 。如果将依赖项作为方法参数传递,则它不应该也是类字段。 |