什么是程序的耦合
程序员文章站
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