简单理解一下内聚和耦合。

什么是模块

模块就是从逻辑上将系统分解为更细微的部分,分而治之。

复杂问题因为复杂性的问题,比较难解决,但是可以将复杂问题拆解为若干简单问题,逐个击破地解决这些简单问题,最后实现解决复杂问题的效果。

模块的粒度划分可大可小,可以是函数,类或功能块等等。

耦合主要描述的是模块与模块之间的关系,内聚则主要描述的是单个模块的内部构成。

什么是耦合

如果模块之间存在依赖,则可能会导致一个模块的改动影响了另外的模块的问题,甚至是相互影响。

两个模块之间的关系越紧密,耦合就越强,模块的独立性就会越差。

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

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

什么是内聚

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

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

低内聚的模块代码,不管是维护、扩展还是重构都相当麻烦。因为要兼顾内部元素的关联性,如果不理清楚的话可能会难以下手。

接口设计原则

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

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

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

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

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

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

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

外观模式

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

桥接模式

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

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

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

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

这样,开发者只需要指定数据库的驱动类,调用的方法即API都是相同的,不会因为数据库的不同而有所区别。

适配器模式

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

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

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

org.apache.log4j.Logger.getRootLogger().info("yanggb");//底层可以随意更换log框架

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

这样,如果要更换log框架,只需要修改FRLoggerFactory中对log框架的引用就可以了,不需要在每个业务代码中修改。

"我曾对你心动过,但赶路要紧,我忘了说。"

mysql耦合_内聚与耦合相关推荐

  1. c语言如何实现高内聚低耦合_如何实现高内聚低耦合?高内聚低耦合的现实例子...

    下面要给大家分享的是一个高内聚低耦合例子,那么编程应该如何实现高内聚低耦合呢?一起来看看下面的实例吧! 案例: 在一个学校里面,有着老师若干名,依次编号. 有学生若干名,依次编号. 现在的话,是要求要 ...

  2. 简单理解高内聚低耦合-高内聚低耦合通俗理解是什么?

    低耦合: 耦合就是元素与元素之间的连接,感知和依赖量度.这里说的元素即是功能,对象,系统,子系统.模块. 例如:现在有方法A和方法B 我们在A元素去调用B元素,当B元素有问题或者不存在的时候,A元素就 ...

  3. java 什么是耦合_什么是耦合、解耦

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

  4. 高内聚低耦合设计原则

    高内聚低耦合 高内聚低耦合是模块设计的基本原则.模块设计就像四世同堂居家过日子,妯娌婆媳吃大锅饭.柴米油盐不分你我很容易伤和气:如果亲兄弟明算账,每顿饭都AA又太显得生分,不利于和谐,因此把握好一个度 ...

  5. 面向对象三大特性五大原则 + 低耦合高内聚

    面向对象的三大特性是"封装."多态"."继承",五大原则是"单一职责原则"."开放封闭原则"."里氏 ...

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

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

  7. 高内聚低耦合通俗理解_带你从入门到精通——「高内聚低耦合」

    如果这是第二次看到我的文章,欢迎订阅z哥的公号(跨界架构师)哦~ 本文长度为2871字,建议阅读8分钟. 坚持原创,每一篇都是用心之作- 下面的这个场景你可能会觉得很熟悉(Z哥我又要出演了): Z哥: ...

  8. java的高内聚和低耦合_彻底弄懂高内聚与低耦合

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

  9. java 高内聚低耦合_高内聚低耦合法则实例解析

    定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越来越密切,耦合度越来越大,当一个类发生改变时,对另外一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触到 ...

最新文章

  1. 计算机复试被刷的3个经历,13年北大物理院光学考研初试第1名复试被刷经历_跨考网...
  2. Java静态代理、动态代理与CGLib代理
  3. PHP 利用Mail_MimeDecode类提取邮件正文
  4. QOMO Linux 4.0 正式版发布
  5. WWW超文本源码浏览器
  6. Windows Server 2008操作系统安装手册
  7. 大数据学习笔记40:Hive - 内置函数(3)
  8. PHP memcached
  9. 案例学习BlazeDS+Spring之十:Chat(
  10. python有什么用-python有什么用
  11. 仿百篮应用市场(已开源)
  12. 【码云周刊第 8 期】面试之前,或许该高效率地学点干货了!
  13. 你们心心念念的 GitHub 客户端终于来了!
  14. 我最喜爱的九位历史人物 - 苏轼(Space搬家)
  15. 生活中的逻辑谬误05.特例谬误
  16. 一只100万年也不死的猫
  17. 去掉SecureCRT菜单栏上的打印按钮
  18. PIE-Engine上传矢量数据
  19. 在Windows中安装MinGW-w64最新版本(目前12.1.0)
  20. gpm系统连不上服务器,安装GPM给Linux虚拟控制台提供配置鼠标支持

热门文章

  1. 华为算法工程师-2020届实习招聘题
  2. Python Django项目部署 Linux 服务器
  3. Android开发艺术探究Note
  4. Foxmail 绑定企业邮箱
  5. 【转载】徐小平techCrunch演讲:创业者要找到跟你同生共死的伙伴!
  6. Source Server + Symbol Server
  7. SQL的经典语句(太全了)
  8. vue学习笔记-03-浅谈组件-概念,入门,如何用props给组件传值?
  9. android 查询wifi信息的类,Android 获取wifi信息
  10. linux socket资源耗尽,TCP的socket资源被耗尽的问题