具有非常具体实现的特定依赖项。
举个例子,Hangfire enqueing库。这有非常具体的实现,可以将后台作业排入异步执行。
我创建了一个围绕此依赖项的包装器,但它最终与依赖项本身紧密耦合。然后,当我在其他程序集中使用我的适配器时,他们最终都需要引用Hangfire。
为什么我要在适配器中包装Hangfire依赖项(或类似的依赖项)?
如果我切换到不同的排队系统,所有的代码都将变为" red"无论如何我需要切换它。我可以看到有关单元测试和/或后期绑定的论点,但还有其他原因吗?
答案 0 :(得分:1)
您的适配器应实现一个接口(六边形用语的端口)。您的界面不应该引用您的依赖项。实施将有此参考。您的业务逻辑应该只使用接口(将注入实现)。这样,您的业务逻辑就没有对您的依赖项的引用。如果您的依赖项发生了更改,您只需编写一个实现相同接口的新适配器。这样,您的业务逻辑就不会发生变化,也不会发生相关的业务逻辑单元测试。这是一个重大的好处。