高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要看类的内聚性是否高,耦合度是否低。目的是使得模块的可重用性、移植性大大增强。
通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。
它描述的是模块内的功能联系;耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。
扩展资料
实例说明:
比如订单模块,订单是跟库存息息相关的,没有库存就没有订单,订单强依赖库存。
把扣减库存的逻辑直接写在在订单模块中,那么订单模块和库存模块就耦合了另一方面,订单模块中有扣减库存的逻辑会造成订单模块的功能比较分散,功能就不够集中,便构成了低内聚。
把订单中的库存逻辑给拆分出来一个独立的库存模块,库存模块对外暴露扣减库存的接口,订单模块调用接口实现减少库存的操作,将订单逻辑与库存逻辑的依赖降低到最小,减小了订单与库存的耦合。
同时订单模块只包含订单处理的逻辑,库存系统只包含库存的处理逻辑,两个系统的业务上更加内聚
参考资料来源:百度百科-高内聚低耦合
高耦合低内聚:块间联系高,块内联系低。
其中内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。
而耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。
高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。
扩展资料:程序开发中的低耦合高内聚
模块之间联系越紧密,其耦合性就越强,模块之间越独立则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。
形象的说,就是要将代码写的和电脑一样,主类就是电脑的主机箱,当程序需要实现什么功能的时候只需要加其他的类引入接口,就像电脑上的usb接口。
一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。
模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。
在程序开发中,尽量做到低耦合高内聚,这样程序的维护成本以及可读性也会大大增强。
参考资料来源:百度百科-高内聚低耦合
高内聚就是说相关度比较高的部分尽可能的集中,不要分散
低耦合就是说两个相关的模块尽可以能把依赖的部分降低到最小,不要让两个系统产生强依赖
可能那么说,有点官方,下面我就举例子说明:
所谓的高内聚就是把功能相关的模块集合在一起,举例:
用户模块,就可以把用户的相关内容放在一起,比如用户个人信息,用户一些收藏等。
新闻模块,就可以把新闻相关的内容放在一起,比如新闻的一起查看,新闻的详情展示等。
如果把新闻相关的内容放到用户模块里面,首先新闻相关得内容和用户模块没有多大得关联性,这样得内聚就不是高聚合。
在举个最实际的例子:211和专科学校他们招生,211招的就是高尖子生,他们得共性就是学生里面的顶尖的一批,专科招的就是学生里面学习能力相对较弱的一批,如果把专科生放到211里面去,那不符合实际,毕竟专科生和211没有多大的关联,符合不了211。从这个招生得这种情况就可以理解为:高内聚(把能力内容相关的放在一起)。
所谓得低耦合就是每个模块之间的关联性将到可控范围的最低,举例:
有个购物车系统和商品是相关的,当加入购物车的时候,势必需要去执行商品相关的操作,这就是耦合,那所谓的低耦合,就是购物车降低对商品这块的联系。
举个现实中的例子:
你找了一个女朋友,那你们之间就有了联系,这就是耦合,然后呢,你们同居了,你们之间联系更加密切了,这样耦合就高了,然后突然有一天,你女朋友说要回老家了,你俩不同居了,你们的联系呢也少下去了,但是你俩还是男女朋友关系,只不过没有同居的时候联系那样亲密。这就是所谓的:低耦合
高内聚,低耦合,他们是相关的,一旦内聚高了,耦合也必然会高,一旦耦合低了,那内聚也必然会降低。因为内聚一旦高了,功能也越来越单一化了,对外模块的需求也变得高了(例:情况一:你现在只学习,啥都不干,那你吃饭,住宿,卫生等等都是需要甲帮你操办,相对于你而言,你是专一化的学习,啥都不用考虑,但是你对甲的依赖就很高,这就是内聚高了,耦合也就高了。情况二:如果你现在不仅要学习,而且住宿,吃饭,卫生都要自己去解决,那相对于甲而言,他的出现与否和你没有多大的关联,他就真成了路人甲,但是对你而言你需要做的东西就多了,那你的能力也就不在是单一化了,就会有很多能力糅合在你身上,但是你和甲的关联就很少甚至是几乎没有,这就是所谓的:耦合低了,内聚也就低了)因此,高内聚,低耦合是相关的,我们能做到得就是找到最合适得一个 内聚和耦合的一个点。因此没有绝对的高内聚低耦合