什么情况下要用接口和注入?

什么情况下要用接口和注入?

目前使用net6开发WebAPI,发现有时似乎为了接口而接口,为了注入而注入。
比如
1、log日志,以前写日志是使用静态类,现在改为使用ILogger,但ILogger每次都要构造函数注入
2、ORM,以前是ORM封装一层,上层直接调用封装后的即可,现在使用ISqlSugarClient构造注入,
3、JWT,最近学习的JWT网上基本都会用上接口,但这个真是需要用接口么?

以上几个,在不考虑切换(log、ORM、验证)的情况下,真的有必要使用注入和接口么?

接口到不讨论,你用不用接口他都存在

至于注入把-------来源于IOC和AOP两块,如果你无法理解这两块,那想不用就不用把,我们也不拦着

先说IOC把:ioc是依赖反转,不用你new,由最前面的配置来new。原因嘛其实是跟现在多人开发模式匹配的。你自己new就的知道new啥,可是另外的人还在开发中,那你new啥呢?所以这里就说,你开发你的。先把接口给我。我先配置个假的,不用等你我就可以先做了

然后在说AOP:AOP是切面编织。你明白的OOP设计都是纵向继承的,那么一些所有类都需要的功能呢(比如你说的:log,orm)?只能横向编织进去。当然你要自己每个类都实现一遍ILoger接口我不反对,你要自己每个类都new一个logger我也不反对,只是相比之下人家给你统一注入了我个人认为也挺好。

另外一个事情把,总体上你回发现集成简单了。比如


service.Add<mqtt>
service.add<mysql>
serivce.add<ribbitmq>

看到好处了么,任何你以后在nuget下载的库,都可以用一个统一方式集成进去。这就是为啥你觉着好像netcore以后大家好像是为了注入而注入

其实你的感觉是真实的,因为大家发现我们以前在nuget发布库后,很多人不会用不会集成。现在写成这样的方式以后,使用的人集成起来很方便不是么

该回答引用GPT:
使用接口和注入的目的是为了解耦,让程序更加灵活,更容易维护和扩展。比如log日志,如果使用静态类,那么如果要更换日志系统,就需要修改代码,而使用接口和注入,只需要更换实现类即可,不需要修改代码。ORM也是一样,使用接口和注入,可以让程序更加灵活,更容易维护和扩展。JWT也是一样,使用接口和注入,可以让程序更加灵活,更容易维护和扩展。
如还有疑问,可以私信帮助解决。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
使用接口和注入的主要优点是提高代码的可维护性和可扩展性。以下是一些情况下建议使用接口和注入的原因:

  1. 可测试性
    使用接口和注入可以使代码更易于测试。您可以轻松地创建模拟对象并将它们注入类中,从而使单元测试更加容易。如果您使用静态类或全局变量等紧密耦合的设计,测试可能会变得更加困难。

  2. 可扩展性
    如果您希望在将来添加更多功能或组件,接口和注入可以使这个过程更加容易。通过将组件耦合解耦,您可以轻松地更改代码而无需重新编写整个应用程序。这可以使您的代码更加灵活和可扩展。

  3. 可维护性
    使用接口和注入还可以使代码更容易维护。通过将应用程序分解成多个组件,您可以更轻松地理解和管理代码。这可以使调试和故障排除更容易,因为您可以更快地找到问题所在。

总之,使用接口和注入不是必须的,但它们可以使您的代码更加灵活和可扩展,更易于测试和维护。如果您的应用程序需要这些功能,那么使用接口和注入是一个好的选择。