高内聚和低耦合

高内聚和低耦合一 什么是高内聚低耦合 1 耦合性也称块间联系 指软件系统结构中各模块间相互联系紧密程度的一种度量 模块之间联系越紧密 其耦合性就越强 模块的独立性则越差 模块间耦合高低取决于模块间接口的复杂性 调用的方式及传递的信息 2 内聚性又称块内联系 指模块的功能强度的度量 即一个模块内部各个元素彼此结合的紧密程度的度量

大家好,我是讯享网,很高兴认识大家。

一、什么是高内聚低耦合

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

 2、内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。

二、内聚和耦合的七种类型和例子

内聚类型:

1.偶然内聚

   例:A模块中有三条语句(一条赋值,一条求和,一条传参),表面上看不出任何联系,但是B、C模块中都用到了这三条语句,于是将这三条语句合并成了模块A。模块A中就是偶然内聚。

2.逻辑内聚
 

 逻辑上相关的功能被放在同一模块中。

   例:A模块实现的是将对应的人员信息发送给技术部,人事部和财政部,决定发送给哪个部门是输入的控制标志决定的。模块A中就是逻辑内聚。

3.时间内聚

   例:编程开始时,程序员把对所有全局变量的初始化操作放在模块A中。模块A中就是时间内聚。

4.过程内聚

   例:用户登陆了某某网站,A模块负责依次读取用户的用户名、邮箱和联系方式,这个次序是事先规定的,不能改变。模块A中就是过程内聚。

5.通信内聚

   例:模块A实现将传入的Date类型数据转换成String类型,以及将Date类型数据插入数据库,这两个操作都是对“Date类型数据”而言的。模块A中就是通信内聚。

6.顺序内聚

   例:模块A实现将传入的Date类型数据转换成String类型,然后再将转换好的String类型数据插入数据库。模块A中就是顺序内聚。

7.功能内聚
 

 模块的所有成分对于完成单一的功能都是必须的。

   例:模块A实现将新注册的用户信息(用户名,密码,个性签名)全部转换成String类型并插入数据库。模块A中就是功能内聚。

耦合类型:


1.内容耦合

   例:模块A中定义了变量a,在模块B中直接使用了。这种情况下模块A和模块B就是内容耦合。

2.公共耦合

   例:定义了一个全局变量a,在A、B、C模块中均调用了a,这种情况下模块A、模块B、模块C就是公共耦合。

3.外部耦合

4.控制耦合

   例:模块A获取用户类型(普通用户、高级用户)传递给模块B,模块B根据不同类型的用户提供不同的服务。这种情况下模块A和模块B就是控制耦合。

5.标记耦合


讯享网

   例:模块A向模块B传递Object类型的数据。这种情况下模块A和模块B就是标记耦合。

6.数据耦合


   模块间通过参数传递基本类型的数据。

   例:模块A实现两个数的加法操作,模块B实现两个加数的初始化,模块B将两个加数传给模块A,模块A进行相加。这种情况下模块A和模块B就是数据耦合。

7.非直接耦合

   例:模块A实现输出字符串,模块B实现接收int数据,两者之间没有信息传递。这种情况下模块A和模块B就是非直接耦合。


三、低内聚高耦合的坏处

低内聚的坏处

高耦合的坏处

四、如何提高内聚、降低耦合?

提高内聚

2、不提供除本职工作外的功能

3、满足可读性、可扩展性、可复用、可维护性要求

4、单独方法不要太长

降低耦合

2、模块的功能化分尽可能的单一,道理也很简单,功能单一的模块供其它模块调用的机会就少。

3、遵循一个定义只在一个地方出现。

4、少使用全局变量。  

5、类属性和方法的声明少用public,多用private关键字,  

6、多用设计模式,比如采用MVC的设计模式就可以降低界面与业务逻辑的耦合度。

7、尽量不用“硬编码”的方式写程序,同时也尽量避免直接用SQL语句操作数据库。

8、最后当然就是避免直接操作或调用其它模块或类(内容耦合);如果模块间必须存在耦合,原则上尽量使用数据耦合,少用控制耦合,限制公共耦合的范围避免使用内容耦合。

五、高内聚低耦合是否意味着内聚越高越好,耦合越低越好?


并不是内聚越高越好,耦合越低越好,真正好的设计
是在高内聚和低耦合间进行平衡,也就是说高内聚和低耦合是冲突的。

对于耦合来说,最弱的耦合是一个类将所有的函数都包含了,这样类完全不依赖其它类,耦合性是最低的。但这样会带来一个明显的问题:内聚性很低,于是整个设计就变成了“低耦合低内聚”了。由于低内聚,整个类的变动同样非常频繁。

小讯
上一篇 2025-03-30 15:05
下一篇 2025-01-26 18:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/122057.html