参考文章1:七种代码耦合类型的图解:你的属于哪一种?-CSDN博客
参考文章2:【程序设计】一文讲解程序设计目标:高内聚,低耦合_代码低耦合高内聚-CSDN博客
- 耦合只有在将整个系统模块化之后才会产生,如果仅由一个模块构成的系统是不存在耦合的。
- 工程项目往往会将一个系统划分为若干个模块,这样就会产生耦合
- 分类1:耦合分为两大类,行为耦合:内容耦合、控制耦合,数据流耦合:公共耦合、外部耦合、引用耦合、数据耦合、非直接耦合
- 分类2:从模块数量分类,两个模块之间关系:控制耦合、引用耦合、数据耦合,三个模块之间关系:公共耦合、外部耦合,不确定数量模块之间关系:内容耦合
- 设计模式是解耦 行为耦合 的一种手段,利用多个设计模式可以在代码层面将内容耦合逐步降低为 非直接耦合
解耦方式:
- 控制耦合解耦方式:1.把if-else语音提到调用者(使用场景比较窄)、2.引入第三个模块封装if-else逻辑,如参考文章1中使用map(前两个模块会与第三个模块形成公共耦合,因此要求C模块很稳定长期不会改变)(设计模式的方式)。两个方式解耦成数据耦合或引用耦合
- 公共耦合 解耦到 外部耦合、引用耦合 解耦到 数据耦合:我觉得意义并不大,因为两者之间并没有降低多少耦合
- 公共耦合、外部耦合解耦方式:把参数提取为局部变量可以降低为数据耦合和引用耦合
- 数据耦合、引用耦合解耦方式(图1):只能通过引入第三个模块来解耦成非直接耦合(图2),但是这三个模块会形成 外部耦合 或 公共耦合(图2),因此第三个模块应当是长期稳定不变的,否则将是无意义的解耦并且提高维护成本
图1 系统1中AB模块标记耦合
图2 系统1A模块、系统1B模块、系统2构成外部耦合,但是系统1的耦合程度为非直接耦合
图3 系统1和系统2标记耦合
内聚待更新