一、定义

1. 内聚

1.1. 内聚,一个模块内各元素间,结合的紧密程度。

2. 耦合

2.1. 耦合,各个代码块间联系紧密程度的度量(模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。)

2.2. 耦合度,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此软件设计时,应注意降低耦合度。

3. 高内聚

3.1. 高内聚,一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。

4. 低耦合

4.1. 解耦,也成为降低耦合度,解除耦合关系。模块间有依赖关系就必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。

4.2. 低耦合,一个完整的系统,模块与模块之间,尽可能的使其独立存在。即,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。

二、实现“高内聚、低耦合”

接口、继承是解耦合的一种好方法。

1、核心思想,尽可能减少代码耦合,如果发现代码耦合,就要采取解耦技术。让数据模型,业务逻辑和视图显示三层之间彼此降低耦合,把关联依赖降到最低,而不至于 “牵一发而动全身”。
2、原则,A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但就是不要直接交叉写。

3、观察者模式,观察者模式存在的意义就是「解耦」,它使观察者和被观察者的逻辑不再搅在一起。
3.1. 观察者模式的事例
网易新闻的夜间模式,当用户切换成夜间模式之后,被观察者会通知所有的观察者【设置改变了,大家快蒙上遮罩吧】。
QQ消息推送,消息推送来了之后,既要在通知栏上弹个推送,又要在桌面上标个小红点,也是观察者与被观察者的巧妙配合。

三、高内聚、低耦合的好处

1、短期,并没有很明显的好处,甚至短期内会影响系统的开发进度。因为高内聚,低耦合的系统对开发设计人员提出了更高的要求。
2、长期来看,低耦合的模块便于进行单元测试,且便于维护。
3、代码关系过于紧密,往往改一小段代码,需要整个项目做很大的改动。所以在实际开发中应该尽量避免过高的耦合。

四、事例

在java中,程序需要调用类A,如果直接在程序中 new A(),这样就写死了。如果下次业务逻辑有变化,就必须重新修改 类A的代码。在这种情况下,如果 类A被其他程序调用,你修改了 类A的代码,可能会对其他程序造成影响。
但是如果在配置文件里配置你要用到的类的相关属性,通过程序动态获取,则只需要修改这个配置文件,把它指向另一个 类B就行了。用B替代A。这就是低耦合,也是java的面向增加开放,面向修改关闭的原则。

Java 高内聚,低耦合相关推荐

  1. java 高内聚低耦合_高内聚低耦合法则实例解析

    定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越来越密切,耦合度越来越大,当一个类发生改变时,对另外一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触到 ...

  2. java 高内聚低耦合_关于高内聚低耦合概念的理解

    概念 高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低. 目的 使程序模块的可重用性.移植性大大增强. 通常程序结构中各模 ...

  3. java 高内聚低耦合_高内聚低耦合是矛盾的吗?

    随着PMTalk版本的不断迭代,到现在我们已经迭代到5.0了,上线了3年班,在这漫长的时间里,一个产品会在研发中.产品设计有什么问题呢? 这里的问题主要是包含三类 1.技术人员不断变换,代码规范层次不 ...

  4. java高内聚低耦合什么意思_高内聚低耦合什么意思?合理通俗解释

    我们常听一些厉害的程序员说过高内聚.低耦合,小伙伴们知道它们是什么意思吗?下面听小编为你解析一下. 什么是低耦合? 官方的说,耦合就是元素与元素之间的连接.感知与依赖量度.元素代表什么?这里的元素代指 ...

  5. java高内聚低耦合什么意思_高内聚低耦合的理解

    在做rm比赛的过程中,发现文件和函数的代码规范逻辑十分重要,这不仅影响到自己看代码的方便与否,还影响到下届队员对我的代码的理解.因此打算开始规范自己的代码习惯,养成良好习惯,以后工作也能用上. 以下转 ...

  6. java高内聚低耦合

    https://blog.csdn.net/kingscoming/article/details/78836229

  7. Java编程思想之高内聚低耦合

    文章目录 1 前言 2 低耦合 2.1 耦合性定义 2.2 耦合性分类 2.3 使用低耦合 3 高内聚 3.1 高内聚定义 3.2 内聚性分类 4 示例 5 高内聚,低耦合的系统有什么好处呢 6 降低 ...

  8. 如何理解高内聚低耦合?Java/Android 程序员必看的知识

    推荐阅读: Android MVC设计模式详解 Android 框架MVVM详解 Android MVC设计模式详解 Java/Android 常见的设计模式总结,提高代码重用性和扩展下 概念 耦合性 ...

  9. 浅谈面向对象开发原则:高内聚,低耦合

    软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低 ...

  10. 编码至高法则-高内聚低耦合

    此法则适合所有语言,咱们以JavaScript和Java两个角度分析一下这个东东. 一.javascript 有这样的一个页面,js.css代码都写在html页面中. 例如:gnj.html v1版本 ...

最新文章

  1. jar包使用以及生成
  2. jdk11默认使用的垃圾回收器是G1
  3. tensorflow包_在Keras和Tensorflow中使用深度卷积网络生成Meme(表情包)文本
  4. python 锁 多进程
  5. 电脑网络维护_电脑维护小技巧(全面)
  6. 升级版的数据透视表!用一工具,做出了HR羡慕的人力数据分析
  7. 三星U-Boot-1.1.6源码分析lowlevel_init.S (board\samsung\smdk6410)
  8. Android监听作用,Android开发之CheckBox的简单使用与监听功能示例
  9. 怎样将Excel中的数据导入到SQL Server 2000数据库中
  10. 计算机二级access考试是不是操作题必须到36分?,2016年计算机二级access考试题库...
  11. DelphiXe Ansistring使用注意事项
  12. 盘点论文免费下载的国内外网站
  13. win7 局域网访问网站
  14. mp4 joiner linux,MP4Joiner怎么用?使用MP4Joiner快速合并多个mp4视频文件的方法介绍
  15. Unity-Photon Pun2个人总结
  16. 基于MODBUS通讯协议的酒厂温湿度、光照度数据采集系统的设计与实现
  17. Linerlayout Layout_wight
  18. 天梵古法健康知识普及:手阳明大肠经
  19. Mac设计的必备设计软件,看看你还差什么
  20. android车载系统测试,【图】原生安卓来了!Polestar 2智能车联测试_汽车之家

热门文章

  1. Android横竖屏切换小结(重建、非重建Activity)
  2. 【网安】工具篇:CE修改器详细使用指南(必看)
  3. postroute stage 在局部增加底层metal strap 修动态IR的ICC脚本
  4. cubieboard mysql_Cubieboard A10 安装Nand系统,配置nginx,php,mysql,samba详细教程
  5. golang使用govendor
  6. 制作ghost的linux系统安装方法,[技术]使用Mondo Rescue进行Linux系统全备份(Ghost for Linux)...
  7. 智能设计应用于视频广告,从鲁班的视觉引擎谈起
  8. 科大奥瑞物理实验——法拉第效应
  9. Spring Boot做后端框架遇到的一些问题
  10. Fast Gradient Sign Attack(FGSM)算法小结