耦合是什么意思 (耦合的通俗理解 )
耦合是什么意思 (耦合的通俗理解 )
耦合,是指两个或多个独立的子系统(即功能单元),在相互作用下,相互制约、相互配合地完成规定目标或任务的过程。 通俗而言,耦合就是一种相互牵制的关系。在计算机编程中,耦合指两个或多个功能单元(如函数、变量和结构体)之间的关系。 在软件设计中,耦合就是指系统中功能单元之间相互制约、相互依赖及共同完成规定目标或任务的过程。它体现在软件开发中的各个阶段,如需求分析阶段、设计与开发阶段等。由于软件开发本身的复杂性和不稳定性,计算机软件系统设计必须考虑到系统与环境之间的相互作用(耦合)关系。
1、耦合的类型
(1)各功能单元间的耦合,例如,两个对象A和B之间的耦合。 (2)功能单元间的独立性,即一个对象与其他对象不产生关系,例如,不带参数的列表中函数与表之间的耦合。 (3)功能单元之间具有内部联系,例如一个对象和另一个对象有联系,但是他们不能交换数据。 (4)功能单元在耦合作用下相互影响对方的行为。例如,两个操作同时发生时由于干扰作用而使整个程序中断或局部发生变化。
2、常见的耦合现象
(1)功能耦合:是指两个功能模块(程序)之间,彼此发生联系,完成相同的功能。 比如,用一个小程序调用另一个小程序,如:用A的方法调用B。 (2)对象耦合:是指两个或多个对象之间发生联系。通常,对象间存在着某些相同的属性或操作。 比如,我们使用计算机打开文件,通常会根据文件类型进行访问。当打开不同类型的文件时,就会出现两个不一样的窗口。 如果一个对象要与其他对象发生关系时,必须有其依赖关系作为前提条件,这种依赖关系可能是数据结构、函数或接口等。
3、如何避免耦合
1)创建一个简单的模型。尽量减少耦合,例如使用接口而不是实现; 2)将每个功能封装起来,避免将它们暴露出来; 3)定义明确的边界。例如:某一个功能只能用这个方法来处理,而不能使用其他方法; 4)当需要使用多个对象时,应该让它们尽量独立。例如:将一个接口设置为接口(返回值和数据都存储在对象内部),而不是将所有对象都放在同一个接口中; 5)如果需要传递数据,可以让它直接从一个类传递到另一个类,而不是通过对象间的调用。 6)使用抽象模型。例如:反射、泛型等思想有助于隔离功能和接口。隔离也有利于维护和修改等工作。
4、如何防止类之间互相耦合
对于上面的两个例子,我们可以看出,它们的结果都是把一个类里的接口或者方法声明到另一个类里面,从而让另一个类实现自己的接口或者方法。这就是典型的相互耦合。 要防止这种耦合,只有一个办法:设计出抽象继承。大家可以看看下面这个图。 我们就可以很好地理解上面两个例子了。在上面的例子中,我们能发现,它是通过抽象继承来实现复用的(这就是抽象继承)。这样两种方式都避免了相互耦合,使得代码更加简洁、易维护和易于重构。