程序的耦合和解耦的分析

首先导入依赖
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.qublog</groupId>
    <artifactId>spring01_jdbc</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
    </dependencies>

</project>

JdbcDemo1.java

package com.qublog.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

//程序的耦合:程序间的依赖关系,包括:类之间的依赖、方法间的依赖。
//解耦:降低程序间的依赖关系,实际开发中应该做到编译期不依赖,运行时才依赖。
public class JdbcDemo1 {
    public static void main(String[] args) throws Exception {
        //注册驱动
        DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()) ;
        //获取连接
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/springtest?serverTimezone=UTC","root","1234");
        //获取操作数据库的预处理对象
        PreparedStatement pstm = connection.prepareStatement("select * from account");
        //执行SQL,得到结果集
        ResultSet resultSet = pstm.executeQuery();
        //遍历结果集
        while(resultSet.next()) {
            System.out.println(resultSet.getString("name"));
        }
        //释放资源
        resultSet.close();
        pstm.close();
        connection.close();
    }
}

运行得到结果:
在这里插入图片描述
将pom.xml中

<!--<dependencies>-->
        <!--<dependency>-->
            <!--<groupId>mysql</groupId>-->
            <!--<artifactId>mysql-connector-java</artifactId>-->
            <!--<version>8.0.16</version>-->
        <!--</dependency>-->
    <!--</dependencies>-->

注释掉,结果会出现编译期错误:
在这里插入图片描述
将JdbcDemo1.java进行修改:

package com.qublog.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

//程序的耦合:程序间的依赖关系,包括:类之间的依赖、方法间的依赖。
//解耦:降低程序间的依赖关系,实际开发中应该做到编译期不依赖,运行时才依赖。
public class JdbcDemo1 {
    public static void main(String[] args) throws Exception {
        //注册驱动
        //DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()) ;
        Class.forName("com.mysql.cj.jdbc.Driver");
        //获取连接
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/springtest?serverTimezone=UTC","root","1234");
        //获取操作数据库的预处理对象
        PreparedStatement pstm = connection.prepareStatement("select * from account");
        //执行SQL,得到结果集
        ResultSet resultSet = pstm.executeQuery();
        //遍历结果集
        while(resultSet.next()) {
            System.out.println(resultSet.getString("name"));
        }
        //释放资源
        resultSet.close();
        pstm.close();
        connection.close();
    }
}

则会出现运行时错误:
在这里插入图片描述
从结果中可以分析出,第一种方法有较强的类之间的依赖。我们的解耦思路:

  • 使用反射来创建对象,而避免使用new关键字。
  • 通过读取配置文件来获取要创建的对象全限定类名。
发布了56 篇原创文章 · 获赞 0 · 访问量 538

猜你喜欢

转载自blog.csdn.net/qq_41242680/article/details/105559713