文章目录

  • 前言
  • 一、何为内聚?
    • 1.1、7 种内聚类型及其描述
  • 二、何为耦合?
    • 2.1、7 种耦合类型及其描述
  • 总结

前言

高内聚、低耦合是我们在软件设计过程中必须遵循的一个重要原则,在整个软件工程中占有很大的比重。而对于内聚和耦合你还是仅仅局限于“高内聚,低耦合”的模糊概念吗?那你是如何判断何为高低呢?本篇文章将带你分别深度剖析和总结内聚与耦合的 7 种类型和描述,为在以后的项目开发与考试中更好地判断类型助你一臂之力!


一、何为内聚?

内聚是指模块内部各元素之间联系的紧密程度,也就是代码功能的集中程度。

1.1、7 种内聚类型及其描述

模块的内聚类型通常可以分为 7 种,我们根据内聚度从高到低排序,如下表所示:

内聚类型 描述
功能内聚 完成一个单一功能,各个部分协同工作,缺一不可
顺序内聚 处理元素相关,而且必须顺序执行
通信内聚 所有处理元素集中在一个数据结构的区域上
过程内聚 处理元素相关,而且必须按特定的次序执行
瞬时内聚 所包含的任务必须在同一时间间隔内执行(如:初始化模块)
逻辑内聚 完成一组逻辑上相关的任务
偶然内聚 完成一组没有关系或松散关系的任务

二、何为耦合?

耦合是指模块之间相互联系的紧密程度。

2.1、7 种耦合类型及其描述

模块的耦合性类型通常分为 7 种,我们根据耦合度从低到高排序,如下表所示:

耦合类型 描述
非直接耦合 没有直接联系,互相不依赖对方
数据耦合 借助参数表传递简单数据
标记耦合 一个数据结构的一部分借助于模块接口被传递
控制耦合 模块间传递的信息中包含用于控制模块内部逻辑的信息
外部耦合 与软件以外的环境有关
公共耦合 多个模块引用同一个全局数据区
内容耦合 一个模块访问另一个模块的内部数据
一个模块不通过正常入口转到另一模块的内部
两个模块有一部分程序代码重叠
一个模块有多个入口

总结

本文给大家介绍了软件设计原则中两个核心概念——内聚、耦合,并对两个概念进行了阐述。同时分别补充了内聚与耦合各自的 7 种类型,便于我们判别其程度,在开发中更好地设计性能优良的软件系统,尽量的减少由于内聚、耦合度差带来后期维护和升级的困扰。


我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!

软件设计原则:内聚、耦合有哪几种类型?内聚度、耦合度如何比较?相关推荐

  1. java 设计模式:软件设计原则、面向对象理论、23 种设计模式

    文章目录 软件设计原则 1.单一职责原则(Single Responsibility Principle) 2.开闭原则(Open Closed Principle) 3.里氏代换原则(Liskov ...

  2. 软件设计原则之 SOLID Principle

    软件设计有很多原则,比如软件设计上的 SOLID principle,单元测试中的 FIRST和AAA,代码实现上的 DRY principle 等.熟悉这些原则,可以把我们的经验上升到理论高度,有利 ...

  3. 软件设计原则之接口隔离原则、合成复用原则、迪米特原则

    系列文章目录 软件设计原则之单一职责原则.开闭原则 软件设计原则之里氏替换原则.依赖倒置原则 软件设计原则之接口隔离原则.合成复用原则.迪米特原则 文章目录 系列文章目录 一.接口隔离原则 什么是接口 ...

  4. 软件设计原则之第一篇——开闭原则(OCP)

    这篇是软件设计原则系列文章的第一篇,之前写过一篇博客里面介绍了七种设计原则,但是将七种原则容纳到一篇文章之中总感觉哪里不对:说的太多文章就会变得冗长影响阅读体验,说的太少总感觉有的话没说完就进行下一项 ...

  5. 设计模式之软件设计原则篇

    3.软件设计原则 本文的内容绝大部分借鉴了https://www.jianshu.com/u/cc272db15285的内容,感兴趣的小伙伴可以进入其简书浏览更细的内容,讲的非常好. 在软件开发中,为 ...

  6. SOLID 软件设计原则

    * 软件腐化的原因: 问题所在   设计目标 ---------------------------------------------------------------------------- ...

  7. 《设计模式详解》软件设计原则

    <设计模式详解> 3.软件设计原则 3.1 开闭原则 示例 3.2 里式代换原则 反例 改进反例 3.3 依赖倒转原则 反例 改进反例 3.4 接口隔离原则 反例 改进反例 3.5 迪米特 ...

  8. 从零开始学习Java设计模式 | 软件设计原则篇:依赖倒转原则

    在本讲,我将为大家介绍软件设计原则里面的第三个原则,即依赖倒转原则. 概述 什么是依赖倒转原则呢?我们来看一下下面这段描述: 高层模块不应该依赖低层模块,两者都应该依赖其抽象:抽象不应该依赖细节,细节 ...

  9. Java设计模式第一章(软件设计原则)(学习笔记)

    3.1软件设计原则 为什么要有软件设计原则:在软件开发过程中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率,节约软件开发成 ...

最新文章

  1. 妙用QTP F1帮助功能
  2. mysql的连接leftjion,mysql的表连接(left|right)join
  3. linux命令行 正则,在Linux命令行中使用正则表达式
  4. js跨域请求方式 ---- JSONP原理解析
  5. Silverlight控件-Slider
  6. Google: 如何做code review?
  7. 4000字,25张精美交互图表,开启Plotly Express之旅!
  8. 蓝牙配对不弹配对框_配对编程在工作场所的好处和陷阱
  9. console觉醒之路,打印个动画如何?
  10. Ubuntu 字体安装以及 vscode字体配置
  11. 使用SplitContainer控件
  12. wordpress原生html5播放器,让WordPress自带html5播放器-视频播放器调用代码详解,支持ios...
  13. void main java_详细讲解Java中的main()方法
  14. 解压后在别的电脑能安装PS,在我电脑就提示安装文件损坏
  15. Zeepelin系列(一)Zeepelin安装和配置以及对Hive的基本使用
  16. 安全设计:加速传输软件镭速传输安全技术解读
  17. 实例掌握Hadoop MapReduce
  18. 利用OpenMP加速拉伸图像操作
  19. Visio 保存高质量的PDF
  20. 轻松为WinRAR添加自定义的右键菜单

热门文章

  1. Docker是传统的应用发布管理的终结者么?
  2. Sublime Text 3 快捷键总结(简洁版本)
  3. Failed to bind properties under mybatis-plus.configuration.result-maps[0]
  4. win10 下安装、配置、启动mysql5.7
  5. vue 圆形 水波_vue项目百度地图+echarts的涟漪水波效果
  6. cmd输入pip报错_pyhon3下pip安装使用教程(win10)
  7. python删除excel内容_用python批量删除sheet
  8. python382怎么用_教你如何使用Python快速生成验证码
  9. 手机屏坏了怎么把里面存东西取出来_手机又卡了,到底是运行不够还是存储容量不足?1分钟搞懂...
  10. android 机顶盒 view 焦点,AndroidTV/机顶盒 ListView获取焦点与点击事件问题处理方案...