高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。
高内聚
内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。
所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
低耦合
耦合:一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。) 对于低耦合,粗浅的理解是:
一个完整的系统,模块与模块之间,尽可能的使其独立存在。
也就是说,让每个模块,尽可能的独立完成某个特定的子功能。
模块与模块之间的接口,尽量的少而简单。
如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。
这样有利于修改和组合。
为什么要追求高内聚和低耦合
软件架构设计的目的简单说就是在保持软件内在联系的前提下,分解软件系统,降低软件系统开发的复杂性,而分解软件系统的基本方法无外乎分层和分割。但是在保持软件内在联系的前提下,如何分层分割系统,分层分割到什么样的粒度,并不是一件容易的事,这方面有各种各样的分解方法,比如:关注点分离,面向方面,面向对象,面向接口,面向服务,依赖注入,以及各种各样的设计原则等,而所有这些方法都基于高内聚,低耦合的原则。 高内聚和低耦合是相互矛盾的,分解粒度越粗的系统耦合性越低,分解粒度越细的系统内聚性越高,过度低耦合的软件系统,软件模块内部不可能高内聚,而过度高内聚的软件模块之间必然是高度依赖的,因此如何兼顾高内聚和低耦合是软件架构师功力的体现。
高内聚,低耦合的系统有什么好处呢?事实上,短期来看,并没有很明显的好处,甚至短期内会影响系统的开发进度,因为高内聚,低耦合的系统对开发设计人员提出了更高的要求。高内聚,低耦合的好处体现在系统持续发展的过程中,高内聚,低耦合的系统具有更好的重用性,维护性,扩展性,可以更高效的完成系统的维护开发,持续的支持业务的发展,而不会成为业务发展的障碍。
分享到:
相关推荐
检测JavaScript类的内聚耦合Code Smell.pdf
耦合内聚.doc
大牛思想(高内聚低耦合).pdf
spring 底耦合高内聚
可可该项目是基于内聚耦合的事件抽象方法的实现。 该实现属于学士学位论文“基于内聚耦合的事件抽象。图书馆在这项工作中,使用以下库:所有这些都可以通过pip install安装。资料收集事件记录在这项工作中,主要使用...
该文档主要讲解了高内聚低耦合的相关知识,希望能给你带来帮助!
描述强内聚、松耦合与它们分别与测试的关系
android高内聚低耦合任务事件总线框架
软件开发中的问题什么是高内聚低耦合?起因模块独立性指每个模块只完成系统要求的独立子功能并且与其他模块的联系最少且接口简单两个定性的度量标准――耦合性和内聚性。耦合Coupling是模块之间依赖程度的度
耦合主要描述模块之间的关系, 内聚主要描述模块内部. 模块的粒度可大可小, 可以是函数, 类, 功能块等等. # 耦合 模块之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强, 模块独立性越差. 比如模块A直接...
高内聚低耦合理解,系统的文字帮助你更快速的理解
一个学生管理系统的demo 高内聚 低耦合 所有对象都是用工厂反射出来的 全部用接口实现
耦合内聚
android高内聚低耦合任务事件总线框架 修复任务达800左右时候,更新UI层报错问题。
关于高耦合低内聚的专业技能指导作业
软件系统的设计思想和原则、设计 方法、系统架构及体系结构、设计模式、运行平台、 开发工具等方面进行综合考虑和合理取舍。
内聚耦合方面代码质量检测工具简介 JDependCooper1.X是一个通过一组指标量化评估代码质量的工具 JDependCooper2.X是一个交流代码质量的互动平台
1. 高内聚和低耦合:2. 单例模式和工厂模式:
4.5.举例说明每种类型的模块耦合度和每种类型的模块内聚度。 (1)耦合——模块之间的依赖程度 内容耦合:一个模块直接修改另一个模块的内容(最不好的耦合形式) 发生情形:(1)一模块直接访问另一模块的内部数据 (2...