一直没理解的依赖注入

问题描述:

本人小白,最近项目用.net core来开发,里面用到了依赖注入,但是自己一直没有理解依赖注入的好处,都说依赖注入可以降低耦合,如果一个方法需要修改逻辑,我想说的是就算我用new的方式也可以实现只改被调用类代码就可以了啊?调用方的代码依然不用变。代码量也不会减少,所以到底依赖注入好在哪里呢?求通俗解释。

在不修改程序核心部分的代码的情况下,以插件的方式扩展功能,或者替换某些模块来实现兼容适配

假设有两个类a,b。其中a依赖b,换句话说就是a这个类要能使用,必须要有b这个类的实例。所以你每次使用a这个类时都要先去实例化b这个类,然后传入a这个类。这样会有很多重复代码。这样就不符合DRY原则了,重复的代码越少,可维护性越高。比如以后a这个类需要同时依赖a和c类,那你是不是就要把所有用到a类的地方都要做相应修改,每个修改的点是不是都要做测试。如果你写了单元测试的话,相应的单元测试也要做修改。
想要详细了解依赖注入为什么很有用的话,可以看martin的文章。https://martinfowler.com/articles/injection.html