美文网首页
图解高内聚与低耦合,傻瓜都能看懂!

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

作者: Java技术栈 | 来源:发表于2020-08-12 14:19 被阅读0次

作者:大道方圆
来源:www.cnblogs.com/xdecode/p/9393885.html

模块

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

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

耦合

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

比如模块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);

适配器模式

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

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

// 代码与log4j强耦合, 不推荐
org.apache.log4j.Logger.getRootLogger().info("info");

// 底层可以随意更换log框架
FRLoggerFactory.getLogger().info("info");

推荐去我的博客阅读更多:

1.Java JVM、集合、多线程、新特性系列教程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程

4.Java、后端、架构、阿里巴巴等大厂最新面试题

觉得不错,别忘了点赞+转发哦!

相关文章

  • 图解高内聚与低耦合,傻瓜都能看懂!

    作者:大道方圆来源:www.cnblogs.com/xdecode/p/9393885.html 模块 模块就是从...

  • [JAVA] Java面向对象三大特征:封装、继承、多态

    高内聚和低耦合 面向对象的最终目的是要构建强健、安全、高效的项目,也就是要实现项目的高内聚和低耦合: 高内聚:把该...

  • 测试开发学习Day03

    面向对象原则:高内聚,低耦合。多聚合,少继承。 【高内聚、低耦合】内聚:每个模块尽可能独立完成自己的功能,不依赖于...

  • diango创建的一个简单的基本流程

    高内聚,低耦合 高内聚:一个模块内部一个功能。 低耦合:每个模块各司其职,尽量零关联。 创建django项目 1、...

  • 2021-08-31 IO流(装饰和继承的区别)

    继承结构组合结构高内聚,低耦合

  • 高内聚,低耦合

    概念 耦合性: 也称块间联系。指的软件系统结构中各模块间相互凉席紧密程度的一种度量。模块之间联系越紧密,其耦合性就...

  • 高内聚低耦合

    内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系; 耦合是软件结构...

  • 高内聚,低耦合

    面向对象思想无疑是目前最为流行的软件设计思想,它的强大之处在于可以将现实比较直观的投射到代码中,这个特点非常符合人...

  • 高内聚,低耦合

    "高内聚,低耦合",听过很多次,但是没有切身体会是不会真正明白的。我的深刻体会是在做一个公司的项目的时候,例如:a...

  • 高内聚、低耦合

    文章转自:http://www.cnblogs.com/robnetcn/archive/2012/04/15/2...

网友评论

      本文标题:图解高内聚与低耦合,傻瓜都能看懂!

      本文链接:https://www.haomeiwen.com/subject/ohopdktx.html