只需1分钟,看完你就知道耦合什么意思 ?

概述
今天跟领导交流时谈了一下业务解耦的一些内容,而其中就谈到了为什么需要解耦?回答这个问题,我们必须得知道什么是解耦 。相信大多数朋友都在软件工程中听过这样一句话 —— “高内聚,低耦合” 。那么什么是 “高内聚”,什么是 “低耦合”呢?下面区分介绍一下 。
01什么是内聚
内聚,从字面上来看有聚精会神、聚在一起的意思,那么 高内聚也就是尽可能的使一个模块或一个类再或者是一个方法只专注做好一件事 。
在设计软件的时候一定要采取【多聚合、少继承】的基本原则,因为使用 “聚合” 的这种方式能够使业务逻辑更加清晰,更有利于我们后期的扩展和维护 。

只需1分钟,看完你就知道耦合什么意思 ?

文章插图
例如订单模块,一般情况下,下单模块都会有如下的信息,订单的信息,产品的信息及谁下的单(买家信息) 。这是基本的,那么设计的时候就要把相关的功能内聚到一起 。当然这是从大功能(下单管理)上来说,当然这些模块还可以再细化分成产品、订单、会员等子模块 。
02耦合
耦合,从字面上来看有藕断丝连的意思,“耦” 这个字在中国汉语里指的是两个人在一起耕地,他俩各干各的互不影响,这也是“耦合”的由来 。
那么 低耦合也就是尽可能的使每个模块之间或者每个类之间再或者是每个方法之间的关联关系减少,这样可以使各自尽可能的独立,一个地方出错,不会影响全部,更能提高代码的重用性 。
只需1分钟,看完你就知道耦合什么意思 ?

文章插图
所以在设计软件的时候也一定要注意各模块之间一定尽可能的减少联系,防止一个模块出现的问题影响到其他模块 。
只需1分钟,看完你就知道耦合什么意思 ?

文章插图
03使用高内聚,低耦合的好处
1、生活中的 “高内聚,低耦合”
军队的存在是为了保家卫国,我们国家的军队分为海军、陆军、空军等部队,他们各自的职责是不一样的 。海军负责海上作战,陆军负责陆地作战,空军负责空中作战,他们之间的联系很少 。
我们可以想想为什么要这样安排呢?如果我们国家的军队不分的那么细,每支部队都有在海上、陆地、空中作战的士兵,如果我们和日本在海上大战,我们还需要从各个部队中抽取能够在海上作战的士兵,再组成一支海上抗日军这样的部队,抽取出来的士兵的战斗力各有不一,还需要一个适应的过程,我们想想这支一盘散沙的部队能取得胜利嘛?
打仗在于兵贵神速,这样的一支部队还是一盘散沙呢,怎么能做到兵贵神速呢?那么我们可以早早的就把他们分为海军、陆军、空军,海军就负责在海上作战,陆军就负责在陆地作战,空军就负责在空中作战,我们如果和日本进行海上大战,我们直接派海军过去不就可以了嘛?
根据我们刚才的分析,证明了军队分为海军、陆军、空军的好处,那么我们再想想,他们之间的联系为什么会很少呢?咱们还是假设一下,如果每个部队总是依赖其他几个部队,不会独立战斗,那么如果某一天海军被派出去执行任务,美国这个时候空军来袭,我们的空军难道要等海军回来再战斗嘛?如果那样的话为时晚矣 。所以他们之间应该独立作战,互相依赖的情况应该要减少 。
这就是生活中的 “高内聚,低耦合” 的例子 。类似这样的例子还有很多,只要我们留心观察就能发现 。
2、Java中的 “高内聚,低耦合”
耦合放到Java里面就是两个类之间的联系的紧密程度,看下面这段代码: