程序的耦合

本文探讨了程序耦合的概念,解释了耦合性如何影响代码模块的独立性和扩展性。通过一个简单的Java实例,展示了耦合在编译期和运行时的影响,并提出了编译期不依赖,运行时依赖的解耦原则。虽然未深入讲解解耦方法,但为读者提供了理解耦合的初步认识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习过一段时间的java后,我们会经常听到这样一个词:耦合

那么到底什么是耦合呢?

我的大学课本上给出以下总结:
耦合性是编程中的一个判断代码模块构成质量的属性,不影响已有功能,但影响未来拓展,与之对应的是内聚性。

耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。

内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。

因此,现代程序讲究高内聚低耦合,即将功能内聚在同一模块,模块与模块间尽可能独立,互相依赖低。没有绝对没有耦合的模块组,只有尽量降低互相之间的影响。使模块越独立越好。

看完是不是还是一头雾水?

没关系,下面用一个小例子解释一下什么叫耦合。

建立一个类。

package com.yx.jdbc;

import com.mysql.jdbc.Driver;

import java.sql.*;

public class JdbcDemo1 {

    public static void main(String[] args) throws Exception {

        //1.注册驱动
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());

        //2.获取链接
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ssm_spring","root","root");

        //3.获取操作数据库的预处理对象
        PreparedStatement preparedStatement = connection.prepareStatement("select * from account");

        //4.执行SQL,得到结果集
        ResultSet resultSet = preparedStatement.executeQuery();

        //5.遍历结果集
        while(resultSet.next()){
            System.out.println(resultSet.getString("name"));
        }

        //6.释放资源
        resultSet.close();
        preparedStatement.close();
        connection.close();

    }
}

并在xml中加入依赖。

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

运行可见结果:

在这里插入图片描述

没有问题。

好,此时,我们将xml中的依赖删掉再运行一次。

我们会发现结果如下:
在这里插入图片描述
报了Error。注意,此处是直接报错,说明该程序在编译时就已经出错。

我们发现,没有了配置文件中的依赖,这个程序在编译时就已经报错,这就是我们说的耦合。

耦合:程序间的依赖关系
包括:
1. 类之间的依赖
2.方法间的依赖
解耦:
降低程序间的依赖关系

在实际开发中应该做到:编译期不依赖,运行时才依赖

好,如果我们在注册驱动时使用反射呢?
在这里插入图片描述

下面是运行结果:
在这里插入图片描述

我们会发现,Error变成了异常,这说明编译时已经没有错误,这时的错误是在运行时出现的。
因此我们有了解耦的思路:
解耦的思路:
第一步:使用反射来创建对象,而避免使用new关键字
第二步:通过读取配置文件来获取要创建的对象全限定类名

通过上面的例子,相信你已经能够理解什么是程序的耦合了,至于具体怎么解耦合,就不在本篇blog中讲述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值