在在网上看了别人的解释,解释的各种各样,但是大都是一个意思
下面来说一下我在参考了网上其他博客之后的理解
控制反转
A类依赖B类
例如下面这种
A{
public B _b;
}
这就是A依赖B
解决办法就是,创建B类的一个接口IB
然后A类就变成了这样
A{
private IB _b;
public void SetB(IB b)
{
_b = b;
}
}
B类继承自IB
然后就有了这样的灵活使用
A a = new A();
a.SetB(new B());
原来是A类直接写死了B类的引用,也就是依赖,或者也叫控制
现在通过接口,灵活的设置B类,这种由A类控制的B类变成了通过外部灵活控制的方式,就是控制反转,原因嘛,控制引用的方式改变了,这也就实现了解耦合,通过继承IB接口灵活实现所需要的功能
依赖注入
在上面的例子中,a.SetB(new B());,就是注入,通过注入,灵活改变IB的实例类,来动态的实现需求
那么依赖是什么呢,其实也就是,A类依赖B类,变成了A类依赖接口IB,通过注入继承实现了IB接口的实例,实现解耦
依赖注入和控制反转应该说的是一样的东西, 只不过可能有两种不同的叫法
这是我的理解,目前没有查阅权威资料,后续如果发现有误,会及时改正