耦合是指一个模块和其他模块之间发生关联,可以理解为类和类之间的关系,或者函数与函数之间的关系
内聚是指一个模块内部元素与元素之间发生关联,可以理解为一个类内部的关系
程序要高内聚低耦合,意思是把相同的功能尽量写到一个类里,如果外部的类想要调用这个类尽量使用接口
下面我直接用类或函数来说明,对咱们程序员来说,可能更好理解一些。
耦合从高到低分别是:
内容耦合:一个类直接使用或修改另外一个类的变量,而不通过set或get方法,差
公共耦合:一个公共的变量可以被两个类直接修改,差
重复耦合:同样的代码可以出现在两个类中,差
控制耦合:一个类调用另外一个类中方法的时候还要通过类型来进行逻辑判断,中
印记耦合:一个类调用另外一个类中方法的时候,只有部分参数有作用,中
数据耦合:一个类调用另外一个类中方法的时候,所有参数都有作用,好
内聚从低到高分别是:
偶然内聚:一个类里有多个不同种类的功能,差
逻辑内聚:一个类里的方法在内部执行的时候需要通过传入的类型来进行逻辑判断,差
时间内聚:一个类里的方法,需要在不同的时间来调用,中
过程内聚:一个类里的方法,需要有执行的先后顺序,中
通信内聚:给一个类里的方法传入另外一个通信类,让它基于这个类来实现功能,中
功能内聚:一个类里的方法都是单一的不可再分的,优
信息内聚:接口类,只暴露方法含义,优