我已经看到了依赖注入的大多数示例,依赖项是在构造函数中注入的。在我的情况下,我不能通过构造函数或任何DI工具注入依赖项。所以,我有一个接口作为方法的参数。我想知道它是否是一个糟糕的方法,它对构造函数注入有什么缺点。
答案 0 :(得分:3)
方法级依赖项(即只是单个方法的依赖项)没有任何问题,将该依赖项作为接口传递没有任何问题。
答案 1 :(得分:3)
这是完全可以接受的。
一些警告:
除非调用该方法" Init"它只应该在该函数中使用(否则对该类用户非常困惑)。
确保该函数的所有调用者都可以访问所需的接口(显然)。
没有任何"缺点"我能想到,你只是传递一个参数:)
答案 2 :(得分:2)
将依赖关系传递给方法是绝对正确的,实际上它是依赖注入原则的允许/接受范式之一,其他方法
构造函数注入 - 通过构造函数传递依赖项的位置。最广泛使用的范例。
Property Injection / Setter Injection - 使用属性传递依赖项的位置。再次成为更广泛使用的范例之一。而且,
方法注入 - 使用方法传递依赖项的位置。
现在使用Method Injection有一些优点/缺点。一个明显的优点是Method Injection绝对是可选的。如果您不需要特定实例中的依赖项,则不要调用注入依赖项的方法。另一方面,在调用需要访问依赖项的类的其他方法时,您需要检查以确保已经注入了依赖项。