开始用依赖注入时,以为控制反转和依赖注入是同一件事,经过查找资料才发现,之前自己的理解是错的。
控制反转是把对组件/对象的控制权进行转移,由原来代码控制转移给容器。
比如:
以前在使用接口的方法时通过实例化对象IA a=new A();来调用接口IA的方法。而用DI时,不需要知道接口的实现,只需要提供该接口给容器,由容器去查找该接口的实现,这样就将原来代码本身的控制权交给了容器。
依赖注入是将接口与实现的对应关系注册到容器中,当使用时只需知道接口。这样在调用时就只依赖于抽象类,而不是具体类,从而达到了解耦的效果。依赖注入其实是一种实现IOC模式的模式,即DI实现IOC的一种方式。
依赖倒置原则就是高层模块不应该依赖于低层模块,他们都应该依赖于抽象;抽象不应该依赖于具体实现,具体实现应该依赖于抽象。
仅个人理解