把系统分为各个功能不同的板块,以电脑主机为例,高聚合就是指主板,cup等内的各种零件之间的紧密联系,松耦合就是指主板与cpu的连接,主板与显卡的连接,主板与电源的连接。把显卡,主板内的零件看作小号零件,这些小号零件组成了大号零件“显卡”和“主板”,小号零件之间的连接相比大号零件之间的连接更紧密。紧密的联系可以发挥出更高的性能(高聚合-高“性能高”,聚合-“联系紧密”),不那么紧密的联系便于灵活使用(松耦合-容易拼接的性能不错的接口)。简洁是常常提到的,相比说一大堆,高聚合,松耦合。有没有言简意赅?软件系统中的该发挥高性能的就弄成高聚合板块,需要更高的自由度的就考虑开一个松耦合接口,这就是我暂时的理解了。

以下是关于模块的部分编写原则

抽象原则(抽象:从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃,这种思维过程,称为抽象。--引用于百度百科)

使用简洁精确的描述刻画模块的行为(或者功能),这种遵循抽象原则的模块刻画方式是“契约接口”(contractual interface)

我们把一号模块看成是“服务提供者”,把使用一号模块的服务的其他模块(例如2号模块,3号模块)看作是1号模块的“客户”。把契约接口看成是服务提供者与客户之间的“服务约定”。服务约定只需要描述能够提供“什么”服务,而不是服务是“怎样”提供的。因此,也许提供的服务很复杂但也只是需要一份简单的服务契约就可以。由于具有简单的服务约定(服务契约),同是服务提供者保证遵守服务约定,因此客户要想使用复杂的服务,只需要理解简单的契约约定。约定接口允许客户使用服务而不需要关心服务的复杂性。也就是模块的复杂性被隐藏了。

就像电话,不需要了解是怎么制作的就能轻松使用。

封装原则

实现模块功能的同时让模块约定接口与模块互不接触,以及对模块的客户来说是不可见的

也叫信息隐藏原则。

封装是为了减少模块间的耦合度,客户知道的模块实现的细节越少,模块和他的客户间的耦合度就越低。封装的一个重要好处是,如果客户只知道约定接口,就可以在不影响客户的情况下修改实现,条件是契约(约定)接口保持一致。

电话服务为例,过去,信号是以模拟模式传输的,现在信号是以数字模式加密传输。尽管电话服务的实现方式改变了,但契约接口仍然保持一致。对电话用户来说,他们收到的唯一影响就是能够享受到更好的通话质量和更安全的通话传输。

——我的学习记录

转载于:https://www.cnblogs.com/TheTop1/p/8800895.html

java中关于高聚合与松耦合相关推荐

  1. java松耦合_java中关于高聚合与松耦合

    把系统分为各个功能不同的板块,以电脑主机为例,高聚合就是指主板,cup等内的各种零件之间的紧密联系,松耦合就是指主板与cpu的连接,主板与显卡的连接,主板与电源的连接.把显卡,主板内的零件看作小号零件 ...

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

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

  3. 迪米特法则实现“高内聚、松耦合”

    什么是"高内聚.松耦合"? 如何利用迪米特法则来实现"高内聚.松耦合"? 有哪些代码设计是明显违背迪米特法则的?对此又该如何重构? 何为"高内聚.松耦 ...

  4. 【设计模式之美 设计原则与思想:设计原则】22 | 理论八:如何用迪米特法则(LOD)实现“高内聚、松耦合”?

    今天,我们讲最后一个设计原则:迪米特法则.尽管它不像 SOLID.KISS.DRY 原则那样,人尽皆知,但它却非常实用.利用这个原则,能够帮我们实现代码的"高内聚.松耦合".今天, ...

  5. 如何用迪米特法则(LOD)实现“高内聚、松耦合”?

    什么是"高内聚.松耦合"? 如何利用迪米特法则来实现"高内聚.松耦合"? 有哪些代码设计是明显违背迪米特法则的?对此又该如何重构? 何为"高内聚.松耦 ...

  6. 【设计模式】理解高内聚、松耦合

    "高内聚.松耦合"是一个非常重要的设计思想,能够有效地提高代码的可读性和可维护性,缩小功能改动导致的代码改动范围.很多设计原则都以实现代码的"高内聚.松耦合"为 ...

  7. 浅谈高内聚与松耦合,各人自扫门前雪,莫管他人瓦上霜

    阅读本文时,请注意软件术语均在括号内用红色标注 高内聚与松耦合,通俗的说就是我国的一句古话:各人自扫门前雪,莫管他人瓦上霜. 我来解释一下,假设你是"面向对象"(面向对象oop)小 ...

  8. python模块化设计耦合度_什么是程序设计中的高内聚、低耦合?

    开发者经常遇到一些项目,比如一个真格量化中的策略,要求较高的模块独立性.模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单.我们有两个定性的度量标准--耦合性和内聚性. ...

  9. 6. 以下耦合度中最松散的耦合是_什么是程序设计中的高内聚、低耦合?

    开发者经常遇到一些项目,比如一个真格量化中的策略,要求较高的模块独立性.模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单.我们有两个定性的度量标准--耦合性和内聚性. ...

最新文章

  1. 教你如何以对象的方式思考
  2. Python基础知识(第四天)
  3. java假死_分析java进程假死
  4. jwt:介绍以及创建token
  5. 电脑主板主要外部接口
  6. java微妙_编码Java时的10个微妙的最佳实践
  7. C++工作笔记-仿大佬使用枚举类型
  8. 在没有图片的情况下用css3实现一个圆形
  9. OpenShift 4 之使用https协议访问Route
  10. 顶部吸附_吸附脱附催化燃烧的工作原理
  11. 【Java】面向对象基本特性-封装
  12. sleep实现原理(转载)
  13. [POI2001] 和平委员会 Peaceful Commission——2-sat(dfs构造字典序最小解)
  14. 现代西班牙语第一册 单词表
  15. 微信小程序OCR插件使用指南
  16. spring boot火车票售卖系统毕业设计代码211004
  17. 智能家居系列之Home Assistant
  18. 1135: 算菜价 C语言
  19. riscv-gnu-toolchain工具链的安装
  20. 软件性能测试完整指南,软件性能测试与调优指南.pdf

热门文章

  1. 微信小程序开发之开发引导页面
  2. freemaker导出word时出现值被分割的问题处理
  3. Java Zip解压缩文件夹工具类 ----ZipUtils
  4. 做外贸,客户聊着聊玩失踪,如何激活不回复的客户?
  5. 2018年高考全国统一考试大纲:化学
  6. Air Playit - 直接在手机上通过WiFi无线播放电脑上的海量高清电影视频 (免费跨平台看片神器)
  7. 一个类似抖音音乐效果、直播间小心心的动画效果
  8. cp linux ax,(轉)每天一個linux命令(8):cp 命令,復制文件和文件夾
  9. simulink抖动_关于抖动时钟的模型
  10. MyBatis基本工作原理介绍