解耦
一、
- 在实际开发中做到编译期不依赖,运行期依赖
示例:
在使用jdbc连接数据库时,注册驱动步骤代码:
此时如果没有相应的jar包,在运行程序时会出现编译错误,若将其改为DriverManager.registerDriver(new com.mysql.jdbc.Driver());
此时如果没有相应的jar包,运行程序时会出现运行错误而不是编译错误。Class.forName("com.mysql.jdbc.Driver");
- 解耦思路
1.通过反射来创建对象,避免使用new关键字
2.通过读取配置文件来获取要创建的对象全限定类名
- 解耦思路
二、创建Bean对象的工厂
Bean:有可重用组件的含义(例如多次调用的service层和Dao层),JavaBean并不单单指实体类。
- 使用工厂来创建service和Dao对象:
1.使用配置文件来配置service和Dao,配置内容为唯一标识=全限定类名(即key value的形式)
2.通过读取配置文件中配置内容,利用反射来创建对象。
BeanFactory类代码:
配置文件代码:
使用工厂来创建对象:
service层中调用Dao层方法时创建对象方法同理