浅谈“高内聚,低耦合”

高内聚,低耦合官方概念:在软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则是高内聚低耦合。从模块粒度来看,高内聚:尽可能类的每个成员方法只完成一件事(最大限度的聚合); 低耦合:减少类内部,一个成员方法调用另一个成员方法。从类角度来看, 高内聚低耦合:减少类内部,对其他类的调用;从功能块来看 高内聚低耦合:减少模块之间的交互复杂度(接口数量,参数数据)即横向:类与类之间、模块与模块之间;纵向:层次之间;尽可能,内容内聚,数据耦合。

下面是我的理解:
我认为软件就如一个饭馆一样,面向顾客。
饭馆里面有2个厨师,一个服务员,一个收银员,厨师一只负责做菜,厨师二负责做汤,服务员只负责服务客户,收银员只负责收银,现在这个饭馆整体就构建完了,然后开始营业,招待客人。(每个人只负责自己那摊儿东西,这就叫高内聚,如果服务员又能做菜又能招待客人,就叫做低内聚)
然后有一天,老板心情不好,嫌弃厨师二做的汤不好喝,就把厨师二炒鱿鱼了,虽然这样,但对饭馆的影响并不大,还是可以正常招呼客人(这里就是高内聚的好处,不影响其他功能的进行,叫做有利于软件的更新与维护)。
厨师二走了呢,但是缺少一个做汤的,咋办呀,在招一个呗,然后老板就又招了一个厨师,我们就把他叫做张三吧。(这里就体现出了低耦合,没说饭馆只能要厨师二做汤吧,张三也能胜任做汤的职位,所以这就是低耦合的好处,换谁上谁都行)
所以只有这样饭馆才能长久的存活下去,不是说没了谁就不能干了,当然,没了老板不行,没了顾客也不行。
总结
高内聚就是说个自干各自的事情。
低耦合就是整体方面不是必须固定的人从事固定的岗位,而是固定的岗位,可以换人来干,减少了因一个人,而整体崩盘的风险。

浅谈“高内聚,低耦合”相关推荐

  1. 为什么要高内聚低耦合?

    首先我觉的有必要声明高内聚低耦合是基于面向对象思想的概念,所以撇开面向对象这个基本思想来理解高内聚低耦合可能比较不容易.但是网络上的文章和博客大多只是单纯的以高内聚低耦合来谈高内聚低耦合.本篇博客试图 ...

  2. 浅谈面向对象开发原则:高内聚,低耦合

    软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低 ...

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

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

  4. 分布式系统关注点:高内聚低耦合

    来源:跨界架构师 下面的这个场景你可能会觉得很熟悉(Z哥我又要出演了): Z哥:@All 兄弟姐妹们,这次我这边有个需求需要给「商品上架」增加一道审核,会影响到大家和我交互的接口.大家抽空配合改一下, ...

  5. 线程间定制化调用通信—— 1 高内聚低耦合的前提下,线程操作资源类 2 判断/干活/通知 3 多线程交互中,必须要防止多线程的虚假唤醒,也即(判断只用while,不能用if)

    生产者与消费者模式 一个生产者与一个消费者 题目:现在有两个线程,可以操作初始值为0的一个变量,实现一个线程对该变量加1,另一个线程对该变量减1,这两个线程的操作加一.减一交替,进行10轮,变量的初始 ...

  6. 编码至高法则-高内聚低耦合

    此法则适合所有语言,咱们以JavaScript和Java两个角度分析一下这个东东. 一.javascript 有这样的一个页面,js.css代码都写在html页面中. 例如:gnj.html v1版本 ...

  7. 软件设计之——“高内聚低耦合”

    耦合度 一.什么是耦合度 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口 ...

  8. 最简单理解高内聚低耦合

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

  9. 高内聚低耦合是什么含义,怎么实现?

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

最新文章

  1. 用supervisord管理杂乱的服务
  2. mapx实现热点效果
  3. Access ADO多连接时数据延迟无法同步无法及时更新的解决办法
  4. 什么是SAP OData Model Creator
  5. 来自朋友最近阿里、腾讯、美团等P7岗位面试题
  6. C++空类中的默认函数
  7. NET对象的XML序列化和反序列化
  8. 年轻人的第一个自定义Springboot starter
  9. 【IoT】BROADBAND POWERLINE COMMUNICATIONS NETWORK DESIGN:宽带电力线通信网络设计
  10. 去水印小程序源码_图片去水印|去水印喵小程序
  11. Win7系统解决无法打开任务管理器
  12. THINKPAD X250 加SSD安装WIN10 BIOS设置
  13. 嵌入式设备查看系统的版本、编译时间、架构等信息(uname命令)
  14. Linux中的setenv与export
  15. Android OkHttp 全面详解
  16. Python初遇问题5.16
  17. 一、PWM 输出控制电机
  18. 2018年计算机网络考研真题及解析
  19. 将火狐浏览器鼠标滚轮滚动速度调到接近edge浏览器的效果
  20. HAproxy 综合配置http https ws wss

热门文章

  1. [zz] Android五大布局Layout详解
  2. SVN客户端 创建分支/合并分支/切换分支
  3. AI 与合成生物学「联姻」的五大挑战:技术、数据、算法、评估与社会学
  4. java学习路线 Java学习路线
  5. Qt播放HTML网页视频
  6. 华为服务器开启xmp后系统信息会变吗,XMP是什么?教你开启XMP瞬间提升内存性能...
  7. 网络和网路互联的设计
  8. red5 FAQ - 刚接触red5的可以看看
  9. 量化择时之移动平均线初探
  10. Navicat还原nb3备份文件步骤