通过编写JDBC的工程代码来分析程序的耦合
首先创建Maven工程,加入mysql的依赖,编写JDBC程序.
①创建一个maven工程
②创建一个maven工程
③在Pom.xml添加mysql的依赖
④创建一张简单的表
create table account(
id int primary key auto_increment,
name varchar(40),
money float
)character set utf8 collate utf8_general_ci;
insert into account(name,money) values('aaa',1000);
insert into account(name,money) values('bbb',1000);
insert into account(name,money) values('ccc',1000);
⑤编写JDBC程序
public class JdbcDemo1 {
public static void main(String[] args) throws SQLException {
//注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//获取连接
Connection Connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/eesy","root","3264421");
//获取操作数据库的预处理对象
PreparedStatement pstm = Connection.prepareStatement("select * from account");
//执行sql语句 得到结果集
ResultSet rs = pstm.executeQuery();
//遍历,封装结果集
while(rs.next()){
System.out.println(rs.getString("name"));
}
//释放资源
rs.close();
pstm.close();
Connection.close();
}
编译期的依赖
如果我们现在在pom.xml中注释掉了mysql的依赖,那么在编译期间,程序就会报错.
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<!-- <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>-->
</dependencies>
image.png
//注册驱动
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");
↑ 如果我们用以上方式来注册驱动,那么在编译期间就不会报错了.它只是一段字符串,我们不再依赖于某个驱动类.但是不要妄想它能运行,因为类还是不存在的,如果运行,会抛出异常.如果再把注释掉的代码再放开,就能正常运行了.
但以上方式还是会有缺点,这个字符串已经写死了,如果要换数据库,这个驱动还是需要更改的.如果想要解决这个问题,可以通过配置文件
程序的耦合和解耦思路分析
程序的耦合
耦合:程序间的依赖关系
包括:
- 类之间的依赖
- 方法间的依赖
解耦:降低程序类的依赖关系
实际开发中:
应该做到:编译期不依赖,运行时才依赖
解耦思路:
- 第一步:使用反射来创建对象 而避免使用 new 关键字
- 通过读取配置文件读取来获取创建对象的全限定名
网友评论