概念

高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。

目的

使程序模块的可重用性、移植性大大增强。

通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事,它描述的是模块内的功能联系;耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。

(视频教程推荐:java视频教程)

降低耦合度的方法

1、少使用类的继承,多用接口隐藏实现的细节。 Java面向对象编程引入接口除了支持多态外, 隐藏实现细节也是其中一个目的。

2、模块的功能化分尽可能的单一,道理也很简单,功能单一的模块供其它模块调用的机会就少。(其实这是高内聚的一种说法,高内聚低耦合一般同时出现)。

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

4、少使用全局变量。

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

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

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

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

增强内聚度方法

1、模块只对外暴露最小限度的接口,形成最低的依赖关系。

2、只要对外接口不变,模块内部的修改,就不得影响其他模块。

3、删除一个模块,应当只影响有依赖关系的其他模块,而不应该影响其他无关部分。

java 高内聚低耦合_关于高内聚低耦合概念的理解相关推荐

  1. 迈高图手机版_迈高图|地区工具电脑版下载_最火软件站

    迈高图是一款全球高清卫星影像数据下载工具,支持谷歌地球.谷歌地图.天地图.百度.高德.腾讯.搜狗.必应(Bing).OpenStreetMap.ArcGIS online.MapQuest.超图.36 ...

  2. java内聚 耦合_图解高内聚与低耦合,傻瓜都能看懂!

    作者:大道方圆 来源:www.cnblogs.com/xdecode/p/9393885.html 模块 模块就是从逻辑上将系统分解为更细微的部分, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决 ...

  3. java内聚 耦合_什么是内聚?什么是耦合?

    2. 内聚分为哪几类?耦合分为哪几类? 内聚有如下的种类,它们之间的内聚度由弱到强排列如下: (1) 偶然内聚.模块中的代码无法定义其不同功能的调用.但它使该模块能执行不同 的功能,这种模块称为巧合强 ...

  4. java开发微信抢红包挂_「高并发秒杀」微信抢红包实战案例

    推荐阅读: ( i' [9 Q6 ?7 K/ p+ B% ~ 8 L$ _" R- y- v  s1 p. e7 Y( }* M, l6 T+ R 阿里二面凉经:设计模式+缓存+Spring ...

  5. 16位的数字高字节和低字节_显示掩盖较低和较高的16位数字半字节| 8086微处理器...

    16位的数字高字节和低字节 Problem: To show masking of lower and higher nibbles of 16bit number using 8086 Microp ...

  6. java实现请求排队处理_【高并发】秒杀系统高并发请求排队处理

    今天无意中看见了这位兄弟的文章 通过请求队列的方式来缓解高并发抢购(初探)  但文章最后说并发超过500 就会出现超发,看了下代码,的确有这个问题 抽空简单完善了下,经压力测试后发现暂无超发现象, 下 ...

  7. k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来部署keepalived,搭建高可用集群. 然后我们这里需要master,155, ma ...

  8. k8s高可用集群_搭建高可用集群(实现方式介绍)---K8S_Google工作笔记0054

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来说搭建高可用集群,为什么要搭建高可用集群. 因为,首先我们说master节点是用来管理其 ...

  9. 微信java精简版低内存_微信精简版低内存apk-微信精简版2019下载v7.0.6 安卓版-腾牛安卓网...

    微信精简版,去除繁杂的功能,保留最核心的微信通讯.公众号等功能,去除升级永保低内存运行,适合各类高旧手机,使用微信再也不会面临卡顿,内存占用太大等问题了. 版本特性: 1.去除升级 2.去除游戏等各种 ...

最新文章

  1. 机房收费系统总结【3】-数据库细节
  2. hyper-v NAT网络
  3. C语言 | 基于STM32的MPU6050模块程序(主程序)
  4. python requests详解_python的requests模块参数详解
  5. cordova使用Gradle构建下载maven太慢,使用阿里云镜像
  6. linux curl 多线程,CURL多线程不执行一直在请求
  7. ssl1063-统计数字【哈希表】
  8. jslint4java_JSLint检测javascript的错误提示
  9. centos5.3搭建安全高效的LNMP服务器
  10. 【牛客 - 303B第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Fibonacci and Counting(Fib数性质,gcd辗转相除法性质)
  11. python 中指针_【系列】Python源码剖析(base 2.7.18)Note之初见“对象”
  12. 會議管理系統--項目總結
  13. Chapter7:非线性控制系统分析
  14. 计算机网络第七版 4-55
  15. 老毛子固件相关内容!
  16. markdown语法转换成html,使用Showdown来把markdown语法转化成html
  17. helm模板开发-流程控制、作用域、循环
  18. 什么东西能够改善睡眠,拯救失眠的助眠好物推荐
  19. 华东理工大学计算机学院考研考什么,华东理工大学计算机专业基础综合2020考研考试大纲...
  20. python--爬虫--积累--多图片网站抓取加速方案和调优记录

热门文章

  1. Java——I/O(字节流、字符流与转换流 )
  2. 在北京,几行代码实现看房自由!
  3. javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified:
  4. MySQL——存储过程详解及实例分析
  5. 三角形面积的计算公式?
  6. 《Python3 网络爬虫开发实战》:parsel 的使用
  7. [附源码]Python计算机毕业设计SSM基于Java的新冠疫苗预约系统(程序+LW)
  8. I9 9900K线程_雷蛇推出灵刃15工作室版 英特尔i9-9900KS上架开卖
  9. 什么样的创业者可能成功?——蒋涛PK Leo
  10. java 中文字体_Linux 添加中文字体库,解决Java 生成中文水印不显示问题