java 高内聚低耦合_关于高内聚低耦合概念的理解
概念
高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。
目的
使程序模块的可重用性、移植性大大增强。
通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事,它描述的是模块内的功能联系;耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。
(视频教程推荐:java视频教程)
降低耦合度的方法
1、少使用类的继承,多用接口隐藏实现的细节。 Java面向对象编程引入接口除了支持多态外, 隐藏实现细节也是其中一个目的。
2、模块的功能化分尽可能的单一,道理也很简单,功能单一的模块供其它模块调用的机会就少。(其实这是高内聚的一种说法,高内聚低耦合一般同时出现)。
3、遵循一个定义只在一个地方出现。
4、少使用全局变量。
5、类属性和方法的声明少用public,多用private关键字。
6、多用设计模式,比如采用MVC的设计模式就可以降低界面与业务逻辑的耦合度。
7、尽量不用“硬编码”的方式写程序,同时也尽量避免直接用SQL语句操作数据库。
8、最后当然就是避免直接操作或调用其它模块或类(内容耦合);如果模块间必须存在耦合,原则上尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。
增强内聚度方法
1、模块只对外暴露最小限度的接口,形成最低的依赖关系。
2、只要对外接口不变,模块内部的修改,就不得影响其他模块。
3、删除一个模块,应当只影响有依赖关系的其他模块,而不应该影响其他无关部分。
java 高内聚低耦合_关于高内聚低耦合概念的理解相关推荐
- 迈高图手机版_迈高图|地区工具电脑版下载_最火软件站
迈高图是一款全球高清卫星影像数据下载工具,支持谷歌地球.谷歌地图.天地图.百度.高德.腾讯.搜狗.必应(Bing).OpenStreetMap.ArcGIS online.MapQuest.超图.36 ...
- java内聚 耦合_图解高内聚与低耦合,傻瓜都能看懂!
作者:大道方圆 来源:www.cnblogs.com/xdecode/p/9393885.html 模块 模块就是从逻辑上将系统分解为更细微的部分, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决 ...
- java内聚 耦合_什么是内聚?什么是耦合?
2. 内聚分为哪几类?耦合分为哪几类? 内聚有如下的种类,它们之间的内聚度由弱到强排列如下: (1) 偶然内聚.模块中的代码无法定义其不同功能的调用.但它使该模块能执行不同 的功能,这种模块称为巧合强 ...
- java开发微信抢红包挂_「高并发秒杀」微信抢红包实战案例
推荐阅读: ( i' [9 Q6 ?7 K/ p+ B% ~ 8 L$ _" R- y- v s1 p. e7 Y( }* M, l6 T+ R 阿里二面凉经:设计模式+缓存+Spring ...
- 16位的数字高字节和低字节_显示掩盖较低和较高的16位数字半字节| 8086微处理器...
16位的数字高字节和低字节 Problem: To show masking of lower and higher nibbles of 16bit number using 8086 Microp ...
- java实现请求排队处理_【高并发】秒杀系统高并发请求排队处理
今天无意中看见了这位兄弟的文章 通过请求队列的方式来缓解高并发抢购(初探) 但文章最后说并发超过500 就会出现超发,看了下代码,的确有这个问题 抽空简单完善了下,经压力测试后发现暂无超发现象, 下 ...
- k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来部署keepalived,搭建高可用集群. 然后我们这里需要master,155, ma ...
- k8s高可用集群_搭建高可用集群(实现方式介绍)---K8S_Google工作笔记0054
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来说搭建高可用集群,为什么要搭建高可用集群. 因为,首先我们说master节点是用来管理其 ...
- 微信java精简版低内存_微信精简版低内存apk-微信精简版2019下载v7.0.6 安卓版-腾牛安卓网...
微信精简版,去除繁杂的功能,保留最核心的微信通讯.公众号等功能,去除升级永保低内存运行,适合各类高旧手机,使用微信再也不会面临卡顿,内存占用太大等问题了. 版本特性: 1.去除升级 2.去除游戏等各种 ...
最新文章
- 机房收费系统总结【3】-数据库细节
- hyper-v NAT网络
- C语言 | 基于STM32的MPU6050模块程序(主程序)
- python requests详解_python的requests模块参数详解
- cordova使用Gradle构建下载maven太慢,使用阿里云镜像
- linux curl 多线程,CURL多线程不执行一直在请求
- ssl1063-统计数字【哈希表】
- jslint4java_JSLint检测javascript的错误提示
- centos5.3搭建安全高效的LNMP服务器
- 【牛客 - 303B第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Fibonacci and Counting(Fib数性质,gcd辗转相除法性质)
- python 中指针_【系列】Python源码剖析(base 2.7.18)Note之初见“对象”
- 會議管理系統--項目總結
- Chapter7:非线性控制系统分析
- 计算机网络第七版 4-55
- 老毛子固件相关内容!
- markdown语法转换成html,使用Showdown来把markdown语法转化成html
- helm模板开发-流程控制、作用域、循环
- 什么东西能够改善睡眠,拯救失眠的助眠好物推荐
- 华东理工大学计算机学院考研考什么,华东理工大学计算机专业基础综合2020考研考试大纲...
- python--爬虫--积累--多图片网站抓取加速方案和调优记录
热门文章
- Java——I/O(字节流、字符流与转换流 )
- 在北京,几行代码实现看房自由!
- javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified:
- MySQL——存储过程详解及实例分析
- 三角形面积的计算公式?
- 《Python3 网络爬虫开发实战》:parsel 的使用
- [附源码]Python计算机毕业设计SSM基于Java的新冠疫苗预约系统(程序+LW)
- I9 9900K线程_雷蛇推出灵刃15工作室版 英特尔i9-9900KS上架开卖
- 什么样的创业者可能成功?——蒋涛PK Leo
- java 中文字体_Linux 添加中文字体库,解决Java 生成中文水印不显示问题