谈谈对ioc的理解
先举个例子
比如我们的项目中有个A类,它需要使用B类资源,我们一般实现的方法是直接创建B类的实例对象,通过实例对象去操作B类中的东西。
那这时,我们在项目中又新建了一个C类,也需要使用B类资源,同样采用前面的方法。然后又有了D类、E类、F类。现在它们都在使用B类资源,且都在类中创建了B类的实例对象。
如果这时,突然出现了一个B+(为什么用+号呢,是为了突出比B类更好)类资源,这个B+类资源比B类资源更好更实用,所以A类、C类、D类等等都要选择去使用B+类资源,它们之前使用B类资源使用的是创建实例对象的方式,这时如果要改成使用B+类资源该怎么办呢,只能改实例对象了,并且每个使用B类资源的类都要改。当然,如果类比较少,改改也无妨,但是一个真正的项目,类是不可能少的,而且说不定在改的时候改着改着就不知道改到哪去了。如果每个类都要改,这简直太麻烦了!可是要如何解决这个问题呢
答案来了
我们可以在A类、C类、D类…这些客户类与资源类之间加一层,让中间层去决定选择使用哪个资源,而A类、C类、D类…这些客户类只需要固定的连接中间层就可以了,就算下次又出现了B++类,要修改使用资源,也只需要在中间层去修改就好了。
具体实现:
中间层声明一个获取资源对象的方法,这个方法返回一个资源对象,A类、C类、D类…只需要调用中间层的该方法就可以了。