参考文档:https://www.cnblogs.com/gitnull/p/10340848.html

哪些是耦合呢?

1.元素B是元素A的属性,或者元素A引用了元素B的实例(这包括元素A调用的某个方法,其参数中包含元素B)。
2.元素A调用了元素B的方法。
3.元素A是元素B的子类。
4.元素A是接口B的实现。

耦合度分类(由高到低)

(1)内容耦合。当一个模块直接修改时操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。
此时,被修改的模块完全依赖于修改它的模块。类与类之间直接调用或继承关系都是属于这种耦合。
避免内容耦合重点在于:不要在类内部直接操作另一个类的对象的数据成员,可以通过在操作类中增加一个函数接口向客户类提供服务来实现
(2)公共耦合。两个及两个以上的模块共同引用一个全局数据项就称为公共耦合。
(3)控制耦合。一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。
(4)标记耦合。模块间通过参数传递复杂的内部数据结构,称为标记耦合。此数据结构的变化将使相关的模块发生变化。
(5)数据耦合。模块间通过参数传递基本类型的数据,称为数据耦合。
(6)非直接耦合。模块间没有信息传递时,属于非直接耦合。