什么是耦合、解耦

一、耦合

1、耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。

2、在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。

3、分类:有软硬件之间的耦合,还有软件各模块之间的耦合。耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。

二、解耦

1、解耦,字面意思就是解除耦合关系。

2、在软件工程中,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。

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

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

java 什么是耦合_什么是耦合、解耦相关推荐

  1. mysql耦合_内聚与耦合

    简单理解一下内聚和耦合. 什么是模块 模块就是从逻辑上将系统分解为更细微的部分,分而治之. 复杂问题因为复杂性的问题,比较难解决,但是可以将复杂问题拆解为若干简单问题,逐个击破地解决这些简单问题,最后 ...

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

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

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

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

  4. java中的高内聚和低耦合和接口的简单理解

    ## *浅谈java编程语言中高内聚和低耦合**先说低耦合中一个例子: 假设你的一个web应用包含50个函数<或者说方法> 你改动一个函数,其他函数正常运行工作...这就是低耦合.高内聚: ...

  5. 耦合式是什么意思_什么是耦合?

    什么是耦合 ? Jams Gosling(Java 之父 ) 说过, " 想抛弃 classes" 当然,他的意思是,不是抛弃 class 本身,而是 继承 (extends 关系 ...

  6. 【Java】浅谈关于代码的耦合性

    [Java]浅谈关于代码的耦合性 前言 一.需求 二.简单的实现 1.资源代码(项目提供) 2.对需求的普通实现 三.利用业务与逻辑分离的方式实现 改进 四.对需求改进后的同步项目改进(优点) 总结 ...

  7. java 枚举高级应用_【后端】java基础(5.6)java高级基础之枚举

    java中除了类和接口,还有一个类型叫做枚举(enum),它出现得比较晚,在JDk1.5之后才出,因此对我们来说并不常用,但是它的作用还是不小. 创建的时候前面和创建类.接口一样,在new之后,我们选 ...

  8. java依赖倒转原则_设计原则之--依赖倒转原则

    [各位博友晚上好,又到了晚上的这个时间,感谢大家一直对Darren博客的支持,希望这篇文章对你有所帮助: 这几天一直在看设计模式:简单工厂模式,策略模式,单一职责原则,开放 [依赖倒转原则又称依赖倒置 ...

  9. 内容耦合 c语言例子,耦合性 内聚加实例

    基本信息 耦合性(或称"耦合度") 英文 : coupling 耦合性也叫块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越紧密,其耦合性就越强,模块之间 ...

最新文章

  1. DOT:视觉SLAM的动态目标物跟踪
  2. CVPR 2019 | 惊艳的SiamMask:开源快速同时进行目标跟踪与分割算法
  3. SpringInAction--Spring Web应用之SpringMvc 注解配置
  4. java word转html 烟火,Java多线程制作烟花效果.doc
  5. Spring MVC-09循序渐进之文件上传(基于Servlet3.0+Html5客户端上传文件)
  6. sklearn下的ROC与AUC原理详解
  7. 介绍一个开源的SIP(VOIP)协议库PJSIP
  8. [省选联考 2020 A/B 卷] 冰火战士(树状数组上二分)
  9. golang执行多个linux命令,golang执行系统command
  10. Nginx负载均衡和反向代理设置
  11. python和什么语言类似_python与其他语言的对比
  12. python保存数据_python各数据存储方法
  13. java多线程通信生产者和消费者简单例子
  14. win10的记事本怎么保存为html,win10系统电脑记事本保存不了的解决办法
  15. 微信小程序蓝牙打印开发心得
  16. 【中医学】9 方剂-4
  17. X11 xcb 交叉编译
  18. 心有猛虎,细嗅蔷薇。—第二十六天
  19. 用前端代码智能识别身份证的头像
  20. 幼儿园数学区如何用计算机作用,实用帖——幼儿园数学区域玩教具

热门文章

  1. php赋值 jq,使用js和jQuery如何实现指定赋值方法
  2. 计算机二级web题目(8.3)--简单应用题2
  3. html在screen检索屏幕分辨率,Electron开发之screen模块-根据屏幕分辨率设置窗口大小...
  4. mysql自定义数据类型_MySQL中的数据类型
  5. 你活在一个计算机模拟中吗,一麻省理工教授认为,我们更有可能生活在计算机模拟宇宙中...
  6. 带哨兵节点的链_HBA公链 | IPFS:区块链“不可能三角”的可能解
  7. leetcode 994.腐烂的橘子
  8. 剑指offer-3(替换空格)
  9. centOS 阿里云yum地址配置
  10. 拓扑排序 确定比赛名次