原始方式
原始方式:在UserServie的方法中直接new UserDao 。
工厂模式
工厂模式:在UserFactory工厂中new UserDao对象,降低了两个类中间的耦合度,但是这两个类和工厂类中又会耦合,存在缺陷。
ioc解耦
ioc的解耦用到了 :工厂模式 、XML配置文件 、反射机制
第一步
第二步
在工厂类中的具体操作:
- 先根据XML配置文件,获取到bean中的class后面的信息,也就是类的全限定性类名。
- 利用反射机制中的API (Class.forName)获取加载到堆中的Class对象
- 根据class对象的newInstance()方法直接获取类的实例对象即可
通过这三步实现了耦合度的进一步降低: 因为此时如果UserDao改变了,只需要改变XML配置文件即可,工厂类和UserService都不需要改变。