将接口作为松耦合的参数可以吗

本文关键字:参数 耦合 接口 | 更新日期: 2023-09-27 17:58:22

在我看到的大多数依赖项注入示例中,依赖项都是在构造函数中注入的。在我的情况下,我不能通过构造函数或任何DI工具注入依赖项。因此,我有一个接口作为方法的参数。我想知道这是否是一种糟糕的方法,以及它与构造函数注入相比有什么缺点。

将接口作为松耦合的参数可以吗

方法级依赖关系(即仅是单个方法的依赖关系)没有错,将该依赖关系作为接口传递也没有错。

这是完全可以接受的。

一些注意事项:

  1. 除非该方法被称为"Init",否则它应该只在该函数中使用(否则该类的用户会非常困惑)。

  2. 确保函数的所有调用方都可以访问所需的接口(显然)。

我想不出任何"缺点",你只是在传递一个参数:)

将依赖项传递给一个方法是完全可以的,事实上,它是依赖注入原理的允许/接受的范例之一,另一个是

构造函数注入-通过构造函数传入依赖项。使用最广泛的范例。

属性注入/设置器注入-使用属性传入依赖项。再次是一个更广泛使用的范式。而且,

方法注入-使用方法传入依赖项。

现在使用Method Injection有一些优点/缺点。一个明显的优点是方法注入是绝对可选的。如果在特定实例中不需要依赖项,那么就不要调用注入依赖项的方法。另一方面,在调用需要访问依赖项的类的其他方法时,需要进行检查以确保已经注入了依赖项。