Java 高内聚,低耦合
一、定义
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 高内聚,低耦合相关推荐
- java 高内聚低耦合_高内聚低耦合法则实例解析
定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越来越密切,耦合度越来越大,当一个类发生改变时,对另外一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触到 ...
- java 高内聚低耦合_关于高内聚低耦合概念的理解
概念 高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低. 目的 使程序模块的可重用性.移植性大大增强. 通常程序结构中各模 ...
- java 高内聚低耦合_高内聚低耦合是矛盾的吗?
随着PMTalk版本的不断迭代,到现在我们已经迭代到5.0了,上线了3年班,在这漫长的时间里,一个产品会在研发中.产品设计有什么问题呢? 这里的问题主要是包含三类 1.技术人员不断变换,代码规范层次不 ...
- java高内聚低耦合什么意思_高内聚低耦合什么意思?合理通俗解释
我们常听一些厉害的程序员说过高内聚.低耦合,小伙伴们知道它们是什么意思吗?下面听小编为你解析一下. 什么是低耦合? 官方的说,耦合就是元素与元素之间的连接.感知与依赖量度.元素代表什么?这里的元素代指 ...
- java高内聚低耦合什么意思_高内聚低耦合的理解
在做rm比赛的过程中,发现文件和函数的代码规范逻辑十分重要,这不仅影响到自己看代码的方便与否,还影响到下届队员对我的代码的理解.因此打算开始规范自己的代码习惯,养成良好习惯,以后工作也能用上. 以下转 ...
- java高内聚低耦合
https://blog.csdn.net/kingscoming/article/details/78836229
- Java编程思想之高内聚低耦合
文章目录 1 前言 2 低耦合 2.1 耦合性定义 2.2 耦合性分类 2.3 使用低耦合 3 高内聚 3.1 高内聚定义 3.2 内聚性分类 4 示例 5 高内聚,低耦合的系统有什么好处呢 6 降低 ...
- 如何理解高内聚低耦合?Java/Android 程序员必看的知识
推荐阅读: Android MVC设计模式详解 Android 框架MVVM详解 Android MVC设计模式详解 Java/Android 常见的设计模式总结,提高代码重用性和扩展下 概念 耦合性 ...
- 浅谈面向对象开发原则:高内聚,低耦合
软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低 ...
- 编码至高法则-高内聚低耦合
此法则适合所有语言,咱们以JavaScript和Java两个角度分析一下这个东东. 一.javascript 有这样的一个页面,js.css代码都写在html页面中. 例如:gnj.html v1版本 ...
最新文章
- jar包使用以及生成
- jdk11默认使用的垃圾回收器是G1
- tensorflow包_在Keras和Tensorflow中使用深度卷积网络生成Meme(表情包)文本
- python 锁 多进程
- 电脑网络维护_电脑维护小技巧(全面)
- 升级版的数据透视表!用一工具,做出了HR羡慕的人力数据分析
- 三星U-Boot-1.1.6源码分析lowlevel_init.S (board\samsung\smdk6410)
- Android监听作用,Android开发之CheckBox的简单使用与监听功能示例
- 怎样将Excel中的数据导入到SQL Server 2000数据库中
- 计算机二级access考试是不是操作题必须到36分?,2016年计算机二级access考试题库...
- DelphiXe Ansistring使用注意事项
- 盘点论文免费下载的国内外网站
- win7 局域网访问网站
- mp4 joiner linux,MP4Joiner怎么用?使用MP4Joiner快速合并多个mp4视频文件的方法介绍
- Unity-Photon Pun2个人总结
- 基于MODBUS通讯协议的酒厂温湿度、光照度数据采集系统的设计与实现
- Linerlayout Layout_wight
- 天梵古法健康知识普及:手阳明大肠经
- Mac设计的必备设计软件,看看你还差什么
- android车载系统测试,【图】原生安卓来了!Polestar 2智能车联测试_汽车之家
热门文章
- Android横竖屏切换小结(重建、非重建Activity)
- 【网安】工具篇:CE修改器详细使用指南(必看)
- postroute stage 在局部增加底层metal strap 修动态IR的ICC脚本
- cubieboard mysql_Cubieboard A10 安装Nand系统,配置nginx,php,mysql,samba详细教程
- golang使用govendor
- 制作ghost的linux系统安装方法,[技术]使用Mondo Rescue进行Linux系统全备份(Ghost for Linux)...
- 智能设计应用于视频广告,从鲁班的视觉引擎谈起
- 科大奥瑞物理实验——法拉第效应
- Spring Boot做后端框架遇到的一些问题
- Fast Gradient Sign Attack(FGSM)算法小结