IOC理论推导
UserDao 接口
UserDaoImpl 实现类
-
UserService 业务接口
private UserDao userDao = new UserDaoImpl();
UserServiceImpl 业务实现类
在我们之前的业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求去修改原代码!如果程序代码量十分大,修改一次的成本代价十分昂贵!
现在通过Set接口实现
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
- 之前,程序是主动创建对象,控制权在程序猿手上
- 使用Set注入后,程序不再具有主动性,而是变成了被动的接受对象
这种思想,从本质上解决了问题,程序猿不需要再去管理对象的创建了.系统的耦合性大大降低,可以更加专注于业务的实现上,这就是IOC的原型
IOC本质
控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法。没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,所谓控制反转就是:获得依赖对象的方式反转了。