什么是高内聚、低耦合?

    起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。

    耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。

    耦合性分类(低――高): 无直接耦合;数据耦合;标记耦合;控制耦合;公共耦合;内容耦合;

1 无直接耦合:

2 数据耦合: 指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递;

3 标记耦合: 指两个模块之间传递的是数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址;

4 控制耦合: 指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能;

5 公共耦合: 指通过一个公共数据环境相互作用的那些模块间的耦合。公共耦合的复杂程序随耦合模块的个数增加而增加。

6 内容耦合: 这是最高程度的耦合,也是最差的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。

    内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
    内聚性匪类(低――高): 偶然内聚;逻辑内聚;时间内聚;通信内聚;顺序内聚;功能内聚;

1 偶然内聚: 指一个模块内的各处理元素之间没有任何联系。

2 逻辑内聚: 指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。

3 时间内聚: 把需要同时执行的动作组合在一起形成的模块为时间内聚模块。

4 通信内聚: 指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。

5 顺序内聚: 指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素输出就是下一功能元素的输入。

6 功能内聚: 这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。与其他模块的耦合是最弱的。

    耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。

    有个例子很容易明白:一个程序有50个函数,这个程序执行得非常好;然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。
一旦你理解了它,你编写概要设计的时候设计类或者模块自然会考虑到“高内聚,低耦合”。

转载于:https://www.cnblogs.com/quanweiru/p/5692653.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

台式电脑如何截屏_买台式电脑如何避免成为被宰羔羊(一)

台式电脑的优点是很多的,比如价格便宜(和游戏本比起来),比如性能发挥稳定(因为不受限于散热),比如屏幕大看起来更舒服。但是和笔记本比起来,台式的水就非常深了,无论是线下实体店,还是线上网店,…

ImageView及其子类

ImageView及其子类 热度 1已有 14 次阅读2016-7-21 21:25 |个人分类:Android知识|系统分类:移动开发 1、ImageView控件(用于在界面上展示图片的一个空间&#xff0c;通过它可以让我们的程序界面更加丰富多彩。) <1>android:src 给ImageView指定了一张图片 <2>set…

n型半导体和p型半导体的区别_VNX系列大流量工业型膜堆, 为半导体等行业提供超纯水!...

自20世纪80年代以来&#xff0c;IONPURE始终以为广泛的应用提供最优质的电化学解决方案延续着它的领导地位。IONPURE持续创新&#xff0c;于2004年推出了VNX 系列大流量CEDI膜堆&#xff0c;单个膜堆的名义产水流量最大可达12.5m3/h。IONPURE于2018年推出了单个膜堆的名义产水流…

【贪心】赶作业

【贪心】赶作业 问题 : 【贪心】赶作业 时间限制: 1 Sec 内存限制: 64 MB 题目描述 小墨老师总是不及时做作业&#xff0c;所以他总有很多的作业要做。每个老师都给了他一个完成作业的最后期限&#xff0c;如果他超过期限交作业&#xff0c;老师就会在他的期末评价中扣分。假设…

属于db模式缺点的是什么_详解 Seata Golang 客户端 AT 模式及其使用

源码:point_down: seata-golang概述我们知道 Seata Java Client 的 AT 模式&#xff0c;通过代理数据源&#xff0c;实现了对业务代码无侵入的分布式事务协调机制&#xff0c;将与 Transaction Coordinator (TC) 交互的逻辑、Commit 的逻辑、Rollback 的逻辑&#xff0c;隐藏在…

iOS 直接使用16进制颜色

在做iOS开发时&#xff0c;一般我们会吸色&#xff0c;就是产品给的图我们一般会吸色&#xff0c;但是最近吸色时候&#xff0c;老大说有较大的颜色偏差&#xff0c;所以要求我们直接使用UI给出的额16进制颜色&#xff0c;你也可以搜索《RGB颜色值转换成十六进制颜色码&#xf…

如何在mfc主对话框中再显示子对话框_win10扩展显示器设置方法

使用win10系统的过程中&#xff0c;常常需要对win10系统扩展显示器进行设置。良多对电脑不太认识的用户不知道win10系统扩展显示器到底该如何设置?实在win10系统扩展显示器的设置方法非常简朴&#xff0c;下面小编教你win10扩展显示器设置方法。一些用户使用电脑时需要运行多个…

每天CookBook之JavaScript-059

向页面添加元素<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>059</title><style type"text/css">.overlay{background-color: #000;opacity: .7;filter: alpha(opacity70);po…

蓝牙驱动卸载后自动安装_Intel 蓝牙驱动安装教程

前言可能有些人之前没有搞定Intel蓝牙的驱动&#xff0c;今天就把蓝牙的驱动也发一下&#xff0c;实现Intel全家桶的驱动&#xff0c;到处倒腾换网卡也是挺折腾的。所支持的蓝牙IDIntelBluetoothFirmware 是一个用于在 macOS 中启用原生蓝牙的固件上传驱动&#xff0c;固件的二…

Java设计模式笔记(1)单例模式

单例模式&#xff1a;确保某一个类只有一个实例&#xff0c;而且自行实例化并向整个系统提供这个实例。 package com.juno.SinglePattern; // 饿汉式单例&#xff0c;通用代码&#xff0c;建议 public class SingletonOne {private static final SingletonOne instance new Si…

PHP中的常用关键字

PHP中常用的关键字&#xff1a;final 、static、const。。。。 final &#xff1a; 1、final不能修饰成员属性 2、final只能修饰类和方法 final作用&#xff1a; 1、使用final修饰的类不能被子类继续 2、使用final修饰的方法不能被子类去覆盖 3、用来限制类不被继承&#xff0c…

cad在线转低版本_为什么别人制图那么快?41个CAD实用技巧,3天轻松玩转CAD

获取更多业界资讯和深度好文● 点击蓝字关注我们 ●点击上方蓝色字体 关注我们我们在使用CAD制图时&#xff0c;总感觉自己的速度非常慢&#xff0c;为什么别人可以那么快的制图呢&#xff1f;今天就给大家分享一些CAD实用技巧&#xff0c;让你3天轻松玩转CAD。一、提高绘图效率…

Java设计模式笔记(2)工厂方法模式

工厂方法模式&#xff1a;定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 在工厂方法模式中&#xff0c;抽象产品类Product负责定义产品的共性&#xff0c;实现对事物最抽象的定义&#xff1b; Creator为抽象创建…

资料收藏夹

一、学习&#xff1a; 视达网 (ps教程,ps视频教程,电商运营,海报,平面设计,字体设计,c4d教程,ai教程,每天免费学习一个视频教程) Cinema 4D 视频教程 虎课网 (ps教程,ps视频教程,电商运营,海报,平面设计,字体设计,c4d教程,ai教程,每天免费学习一个视频教程) Cinema 4D 视频教…

不同协议的数据包如何处理_【项目申报专员】如何处理各种不同的项目申报工作呢...

前文我们说到了在企业做项目申报专员需要掌握的政策查询&#xff0c;以及申报流程解读工作&#xff0c;今天我给大家来分享在企业如何做好对不同项目的申报工作。说这个问题之前&#xff0c;我们先得了解一些背景知识。在企业做项目申报专员工作意味着什么&#xff1f;意味着事…

Java设计模式笔记(3)抽象工厂模式

抽象工厂模式&#xff1a;为创建一组相关的或者相互依赖的对象提供一个接口&#xff0c;而且无需指定他们的具体类。 抽象工厂模式是工厂方法模式的升级版本&#xff0c;在有多个业务品种、业务分类时&#xff0c;通过抽象工厂模式产生需要的对象是一种非常好的解决方式。 pac…

jsoup简单的爬取网页数据

/*** Project Name:JavaTest* File Name:BankOfChinaExchangeRate.java* Package Name:com.lee.javatest* Date:2016年7月22日下午1:34:09* Copyright (c) 2016年7月22日, Pwenlee All Rights Reserved.* */package com.lee.javatest;import java.io.Serializable; import java…

sql每个月每个人的花销占比_11月:每个认真生活的人,都值得被认真对待

恍然已11月&#xff0c;风吹枯叶落&#xff0c;落叶生肥土&#xff0c;肥土滋养着果实&#xff0c;果实缓慢而坚定着成长。图片&#xff5c;东海青 摄图片&#xff5c;子夜鸟 摄11月&#xff0c;不要怂这是属木芙蓉的晚秋。花朵娇嫩&#xff0c;它却无所忌惮地美丽着&#xff0…

Java设计模式笔记(4)模版方法模式

模版方法模式&#xff1a;定义一个操作中的算法的框架&#xff0c;而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。 抽象模版的方法分为两类&#xff1a; 1. 基本方法也叫基本操作&#xff0c;是由子类实现的方法&#xff0c;并且在…

比较TFS与SVN,你必须知道的10点区别

相比SVN&#xff0c;对于TFS的优点我有以下几点看法&#xff0c;供大家参考&#xff1a; 1. 总体比较&#xff1a; TFS是一个应用软件生命周期管理&#xff08;ALM&#xff09;软件&#xff0c;是一个软件研发平台产品&#xff0c;其功能覆盖了软件研发过程中的所有环节&#…