2.IOC理论指导
什么是IOC,什么是DI,为什么要使用它?
1.UserDao接口
1 | public interface UserDao { |
2.UserDaoImpl实现类
1 | public class UserDaoImpl implements UserDao { |
3.UserService业务接口
1 | public interface UserService { |
4.UserServiceImpl实现类
1 | public class UserServiceImpl implements UserService { |
在我们之前的业务中,用户的需求可能会影响我们的代码,我们需要根据用户的需求去修改源代码!如果程序的代码量十分大,修改一次的成本代价十分昂贵!
我们使用一个Set接口实现,已经发生了革命性的变化
1 | private UserDao userDao; |
- 之前程序是主动创建对象,控制权在程序员手上!
- 使用了set诸如后程序不再具有主动性,而是被动的接受了对象
这种思想从本质上解决了问题,程序员不在去管对象的创建了。系统的耦合性大大降低,可以更加专注在业务上。这就是IOC的原型。
IOC的本质
控制反转(Inversion Of Control)是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人认为DI只是IOC的另一种说法。没有IOC的程序中,我们使用面向对象编程,对象的创建与对象的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓的控制反转就是:获得依赖对象的方式反转了。
Spring中实现控制反转的是IOC容器,其实现方法是依赖注入(DI)