模块

模块就是从逻辑上将系统分解为更细微的部分, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决。

耦合主要描述模块之间的关系, 内聚主要描述模块内部。模块的粒度可大可小, 可以是函数, 类, 功能块等等。

耦合

模块之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强, 模块独立性越差。

比如模块A直接操作了模块B中数据, 则视为强耦合, 若A只是通过数据与模块B交互, 则视为弱耦合。

独立的模块便于扩展, 维护, 写单元测试, 如果模块之间重重依赖, 会极大降低开发效率。

内聚

模块内部的元素, 关联性越强, 则内聚越高, 模块单一性更强。一个模块应当尽可能独立完成某个功能,

如果有各种场景需要被引入到当前模块, 代码质量将变得非常脆弱, 这种情况建议拆分为多个模块。

低内聚的模块代码, 不管是维护, 扩展还是重构都相当麻烦, 难以下手。

接口设计原则

好的接口应当满足设计模式六大原则, 很多设计模式, 框架都是基于高内聚低耦合这个出发点的。

单一职责原则:一个类只负责一个功能领域中的相应职责。

开闭原则:一个软件实体应当对扩展开放,对修改关闭。

里氏代换原则:所有引用基类(父类)的地方必须能透明地使用其子类的对象。

依赖倒转原则:抽象不应该依赖于细节, 细节应当依赖于抽象。换言之, 要针对接口编程, 而不是针对实现编程。

接口隔离原则:使用多个专门的接口, 而不使用单一的总接口, 即客户端不应该依赖那些它不需要的接口。

迪米特法则: 一个软件实体应当尽可能少地与其他实体发生相互作用, 例如外观模式, 对外暴露统一接口。

举几个栗子

外观模式

为系统中多个子系统提供一致的对外调用, 对客户端隐藏子系统细节, 降低其与子系统的耦合。

桥接模式

JDBC中的把面向厂商的接口(Driver)和面向使用者的API(DriverManager)做了拆分隔离。

// 开发者只需要关注JDBC API, 无需关注不同数据库Driver接口实现

Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection(url, username, password);

适配器模式

引入第三方库(hibernate, log4j), 不应该直接在代码中继承或者使用其实体类。

需要抽出上层统一接口, 然后增加实现类, 对外暴露接口。

// 代码与log4j强耦合, 不推荐

org.apache.log4j.Logger.getRootLogger().info("info");

// 底层可以随意更换log框架

FRLoggerFactory.getLogger().info("info");

耦合式是什么意思_耦合是什么意思通俗点(耦合摆原理)相关推荐

  1. 耦合式是什么意思_什么是耦合、解耦

    一.耦合 1.耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象. 2.在软件工程中,对象之间的耦合度就是对象之间的依赖性.对象之间的耦合越高,维护成本越高,因此对象 ...

  2. 耦合式是什么意思_定向耦合器是如何工作的?能怎样应用?看完就全明白了

    定向耦合器的工作原理 定向耦合器是微波测量和其它微波系统中常见的微波/毫米波部件,可用于信号的隔离.分离和混合,如功率的监测.源输出功率稳幅.信号源隔离.传输和反射的扫频测试等.它是一种有方向性的微波 ...

  3. 耦合式是什么意思_高内聚 ,低耦合 到底是什么意思?

    总会听到大牛们说到"高内聚,低耦合",不是特别明白,最近查阅了一些资料,才明白. '高内聚,低耦合'是相对于代码而言,一个项目中: 每个模块之间相互联系的紧密程度,模块之间联系越紧 ...

  4. 耦合式是什么意思_什么是微服务?一篇文章让你彻底搞明白

    一.微服务介绍 1. 什么是微服务 在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微".什么是"服务", 微 狭义来讲就 ...

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

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

  6. 外部轴耦合_Rototest轴耦合式底盘测功机

    Rototest轴耦合式底盘测功机(轮毂式)可模拟整车实际行驶的道路负载,同步采集驱动轮扭矩.转速等参数,分析整车动力性能.同时也可配备其他设备进行经济性.排放性.能量管理和续驶里程等试验. 系统组成 ...

  7. 耦合式无线充电系统设计记录_1

    1.设计过程 昨天用刚绕的利兹线绕了两个6匝的线圈.利兹线为150股,必须要用利兹线,因为利兹线是由多股铜线制成,可有效抑制趋肤效应关于趋肤效应有兴趣的同学可以上百度找一下这里不再阐述,直径约为10c ...

  8. 一文读懂WPT系统中耦合的三种状态——过耦合、临界耦合、欠耦合时频率分裂对传输效率与功率的影响

    前言:本文章属于菜鸡学习文章,不代表一定权威性,如有错误,请各位大佬评论区指正!主要对改论文进行学习以及加入自己的一些想法,还希望读者发现错误即使指出. 目录 一.对于无线电能传输功率的分析 二.对于 ...

  9. 用计算机算3次根号0.00005,使用ORCA在TDDFT下计算旋轨耦合矩阵元和绘制旋轨耦合校正的UV-Vis光谱...

    使用ORCA在TDDFT下计算旋轨耦合矩阵元和绘制旋轨耦合校正的UV-Vis光谱 文/Sobereva@北京科音 First release: 2019-Feb-10  Last update: 20 ...

最新文章

  1. Clumpify:能使 Fastq 压缩文件再缩小 30% 并加速后续分析流程
  2. 架构师和产品经理的区别
  3. HPE第四季度财报数据喜忧参半
  4. 智能车竞赛创意组别对应的FQA
  5. Java -Inverse covariance
  6. 算法的力量(李开复)
  7. C# 8中的Async Streams
  8. JavaScript状态2018
  9. 被word格式折磨疯掉的我
  10. eclipse无法启动的各种解决方法
  11. FCKEditor v2.6.3 最新版-ASP.NET 演示程序
  12. 【WinHex篇】WinHex跳过坏扇区制作磁盘镜像
  13. 力扣刷题 DAY_68 回溯
  14. EasyExcel快速上手
  15. SVN 检查修改或者提交代码时候一直显示please wait的解决办法(汉化版本显示请稍候)
  16. 正版office 2007 简体中文专业版(附正版序列号)高速下载正版office 2007 简体中文专业版...
  17. B2B2C分布式微服务电商源码(支持:小程序、公众号、H5、IOS、Android)
  18. 前端----CSS 父元素在子元素之上显示
  19. Arduino实例2——快乐肥宅机
  20. 【咕嘎文本对比助手】如何两份手机号或文本对比去重,新旧两批号码如何快速的对比重复,找出重复和不重复的部分,单个文件如何找出重复,单个文件如何找出不重复下面关于五种逻辑做详细解答

热门文章

  1. ffmpeg从某站提取视频、音频、详解
  2. boost multi_index_container 多索引容器的使用
  3. 蓝色扁平化年终总结PPT模板
  4. Face++头部姿势headpose参数解析
  5. 苹果怎么分享无线密码_怎么更改无线路由器密码
  6. lodash和Underscore介绍
  7. CTF题记——暑假计划第一周
  8. App崩溃原因定位分析
  9. Ubuntu18.04离线安装Intel I219-V网卡驱动解决有线网络无法连接网卡不识别的问题
  10. 从一个网上找到的Web2经典配色