欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

什么是程序的耦合

程序员文章站 2022-04-15 20:00:08
什么是耦合耦合性(Coupling),也叫耦合度,它是对模块间关联程度的度量。在软件工程中,耦合指的就是对象之间的依赖关系。对象之间的耦合越高,则表明模块的独立性和可复用性越差,且维护成本越高。因此对象的设计应使类和构件之间的耦合最小。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。内聚和耦合内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的....

什么是耦合

耦合性(Coupling),也叫耦合度,它是对模块间关联程度的度量。

在软件工程中,耦合指的就是对象之间的依赖关系。对象之间的耦合越高,则表明模块的独立性和可复用性越差,且维护成本越高。因此对象的设计应使类和构件之间的耦合最小。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。

内聚和耦合

  • 内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。
  • 耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。 程序讲究的是低耦合,高内聚。就是同一个模块内的各个元素之间要高度紧密,但是各个模块之间的相互依存度却不要那么紧密。
class UserService{

	//UserDao userDao = new UserDaoImpl();
	UserDao userDao = BeanFactory.getBean("UserDao");
}

耦合的示例

初识耦合

我们在前面课程学习中,接触到最明显的一个因程序耦合而不得不改变的技术点就是JDBC操作的注册驱动:

/**
 * 程序的耦合演示
 */
public class JdbcDemo {

    /**
     * JDBC操作
     */
    public static void main(String[] args) throws Exception{
        //1.注册驱动
        //此处我们的代码中依赖了mysql的具体驱动实现,而实际开发中,当我们要更改数据库实现,就需要修改此处的源代码。
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        //2.获取连接
        //3.获取预处理对象
        //4.执行sql语句
        //5.处理结果集
        //6.释放资源
    }
}

实际开发中耦合具体体现

/**
 * 用户业务层接口
 */
public interface UserService {

    /**
     * 模拟保存用户
     */
    void save();
}	
/**
 * 用户业务层实现类
 */
public class UserServiceImpl implements UserService {

    /* 在我们使用三层架构作为开发基础时,层和层之间的调用,如果使用具体实现类就会出现内容依赖。
     * 在需要更换实现时,就需要修改源码,造成当前业务层功能的独立性很差。同时给我们维护带来极大不便。
     */
    private UserDao userDao = new UserDaoImplForOracle();
    //private UserDao userDao =  new UserDaoImplForMySQL();

    @Override
    public void save() {
        userDao.save();
    }
}

/**
 * 用户的持久层接口
 */
public interface UserDao {

    /**
     * 模拟保存用户
     */
    void save();
}
/**
 * 用户的持久层实现类
 */
public class UserDaoImplForMySQL implements UserDao {

    @Override
    public void save() {
        System.out.println("执行了保存用户 for MySQL");
    }
}
/**
 * 用户的持久层实现类
 */
public class UserDaoImplForOracle implements UserDao {

    @Override
    public void save() {
        System.out.println("执行了保存用户 for Oracle");
    }
}

本文地址:https://blog.csdn.net/weixin_47785112/article/details/107383973