IoC 的思想就是两方之间不互相依赖,由第三方容器来管理相关资源。这样有什么好处呢?
例如:现有一个针对 User 的操作,利用 Service 和 Dao 两层结构进行开发
在没有使用 IoC 思想的情况下,Service 层想要使用 Dao 层的具体实现的话,需要通过 new 关键字在UserServiceImpl
中手动 new 出 IUserDao
的具体实现类 UserDaoImpl
(不能直接 new 接口类)。
很完美,这种方式也是可以实现的,但是我们想象一下如下场景:
开发过程中突然接到一个新的需求,针对IUserDao
接口开发出另一个具体实现类。因为 Server 层依赖了IUserDao
的具体实现,所以我们需要修改UserServiceImpl
中 new 的对象。如果只有一个类引用了IUserDao
的具体实现,可能觉得还好,修改起来也不是很费力气,但是如果有许许多多的地方都引用了IUserDao
的具体实现的话,一旦需要更换IUserDao
的实现方式,那修改起来将会非常的头疼。