精华内容
下载资源
问答
  • 高内聚低耦合通俗解释
    千次阅读 多人点赞
    2021-01-07 17:43:35

    首先,在谈到内聚耦合之前必须要谈到一个概念“模块”。对于一个系统,我们把负责不同功能的部分称之为一个模块。

    高内聚:指的是模块内部各个元素的关系。模块的内聚反映模块内部元素联系的紧密程度。主要是指一个模块内部是由相关性很强的代码组成,该模块只负责一个任务,即常说的单一职责原则。 例如系统中存在A、B两个模块进行交互,如果修改了A模块,不影响B模块的工作,反之,修改了B模块也不影响A模块工作,即A、B模块都各司其职,那么我们就认为A模块有足够的内聚。

    低耦合:指的是模块间的关系。A模块与B模块存在依赖关系,当A模块发生改变时,B模块仍然可以正常工作,那么就认为A与B是低耦合的。

    举个反例:

    一个项目中有20个函数调用良好,但是要修改了其中1个函数,另外的19函数个都要进行修改,这就是高耦合!独立性太差!

    现在的软件结构设计,都会要求“高内聚,低耦合”,来保证软件的高质量!

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

    先看下百度百科的解释:
    高内聚低耦合,是 软件工程 中的概念,是判断软件设计好坏的标准,主要用于程序的 面向对象 的设计,主要看类的内聚性是否高, 耦合度 是否低。
    目的是使程序模块的可重用性、移植性大大增强。
    通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。
    内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事,它描述的是模块内的功能联系;
    耦合是软件结构中各模块之间相互连接的一种 度量 ,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。

    通俗解释:
    内聚就是模块内部之间的联系,耦合就是模块与模块之间的联系。

    高内聚是加强模块内部之间的联系,使得模块内部的数据紧密性很强,没有其他相关度小的数据影响,让模块的独立性极大提高,如果一个模块的内聚性低,说明模块内部有很多其他数据,那么改动的时候就会影响到其他数据牵扯到的模块。

    低耦合就是要尽量减少模块与模块之间的联系,使得调用一个模块时没必要去考虑其他模块是否受影响,因为他们之间独立性很强。

    就拿函数来说,你的递归函数里面的数据都只和你要实现的递归函数有关,不要把里面的数据放到另一个排序函数中执行处理,不然的话你每次递归函数的执行是与这个排序函数挂钩的,那么如果我想要用你这里的递归函数,还得把你的排序函数也拿过来,说明程序模块的可重用性和可移植性很差,而这里的函数其实就是模块,这个例子就是典型的低内聚高耦合的例子。

    读完了再去回味一下这句话:
    高内聚:尽可能类的每个成员方法只完成一件事(最大限度的聚合);
    低耦合:减少类内部,一个成员方法调用另一个成员方法。

    再来回味一下百度百科的解释吧:
    高内聚低耦合,是 软件工程 中的概念,是判断软件设计好坏的标准,主要用于程序的 面向对象 的设计,主要看类的内聚性是否高, 耦合度 是否低。
    目的是使程序模块的可重用性、移植性大大增强。
    通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。
    内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事,它描述的是模块内的功能联系;
    耦合是软件结构中各模块之间相互连接的一种 度量 ,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。

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

    低耦合:
    耦合就是元素与元素之间的连接,感知和依赖量度。这里说的元素即是功能,对象,系统,子系统。模块。

    例如:现在有方法A和方法B

    我们在A元素去调用B元素,当B元素有问题或者不存在的时候,A元素就不能正常的工作,那么就说元素A和元素B耦合。

    --耦合带来的问题:
    当元素B变更或者不存在时,都将影响元素A的正常运作,影响系统的可维护性和易变更性。同时元素A只能运行在元素B中,这也大大的降低了A元素的可复用性。正因为耦合的种种弊端,我们才需要在软件设计上追求低耦合。

    --低耦合如何做:
    ①元素A不能过度依赖元素B

    ②合理的职责划分:让系统中的对象各司其职,不仅是提高内聚的要求,同时也可以有效地降低耦合

    ③使用接口而不是继承:我们不难发现。继承就是一种耦合,假如子类A继承了父类B,不论是直接继承或者间接继承,一但父类B不存在或者发生任何变更,都将导致子类A不得不修改或者重写。假如父类B的子类数十上百的,这就是灾难性的变更。

    高内聚:
    高内聚是另外一个评判软件设计质量的标准。内聚更为专业的说法叫做功能内聚,是对系统中元素职责的相关性和集中度的量度。如果元素有高度的相关职责,除了这些职责在没有其他的工作,那么该元素就有高内聚。

    例如:这就好像,如果我是一个项目经理,我的职责是监控和协调我的项目各个阶段的工作。当我的项目进入需求分析阶段,我会请求需求分析员来完成;当我的项目进入开发阶段,我会请求软件开发人员来完成;当我的项目需要测试的时候,我会请求测试人员。。。如果我参与了开发,我就不是一个高内聚的元素,因为开发不是我的职责。

    --为什么要高内聚: 可读性、复用性、可维护性和易变更性。

    简单的理解高内聚低耦合:耦合和内聚的的评判标准是强度,耦合越弱越好,内聚越强越好

    --耦合指模块与模块之间的关系,最弱的耦合就是通过一个主控模快来协调n哥模块进行运作。

    例如:。还是举一个我举过的例子:客户要求在界面上增加一个字段,你的项目要修改几个地方呢?如果你只要修改项目文档,那么你的开发构架就是最低强度的耦合,而这种设计 成熟的开发团队都已经做到了,他们使用开发工具通过项目模型驱动数据库和各层次的代码,而不是直接修改那些代码;

    --内聚指的是模块内部的功能,最强的就是功能不能拆分,也就是原子化。


    再简单的说: 高内聚、低耦合讲的是程序单位协作的问题,  你可以这样理解,一个企业的管理,  最理想的情况就是各个部门各司其职,井然有序,互不干涉,  但是需要沟通交流的时候呢,  各个部门都可以找到接口人专门负责部门沟通以及对外沟通。 在软件里呢, 就是说各个模块要智能明确, 一个功能尽量由一个模块实现,  同样,一个模块最好只实行一个功能。这个是所谓的“内聚”;  模块与模块之间、系统与系统之间的交互,是不可避免的, 但是我们要尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生,  尽可能多的单独提供接口用于对外操作, 这个就是所谓的“低耦合”。 但是实际的设计开发过程中,总会发生这样那样的问题与情况, 真正做到高内聚、低耦合是很难的,很多时候未必一定要这样, 更多的时候“最适合”的才是最好的, 不过,理解思想,审时度势地使用, 融会贯通,灵活运用,才是设计的王道。

    展开全文
  • ” 我摇了摇头,给他从头到底普及了下3-Tier Architecture,并且强调了界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)的分层目的是为了“高内聚低耦合” 。...

    在IAS2019中台架构峰会上,我曾与一位年轻帅气的技术小伙来了一番有趣的对话。

    因为和朋友有约,所以我在现场互动结束之后,就急匆匆地跟其他嘉宾打了声招呼,抱着笔记本冲出了会场。

    但没想到刚到电梯口,却被一位帅小伙迎面拦住。

    他朝我摆了摆手,开口说:“王老师,耽误你点时间,想请教一个技术性问题可以吗?”

    我假装谦虚:“太客气了,请教不敢当,大家一起探讨探讨。”

    随即他从背包中拿出手提电脑,打开一份PPT,并指着其中的几张图问我:“你看,这是我们公司的业务中台,麻烦你给评价评价。”

    97a4823a7e4ce0166a7d72e94a64cec8.png

    图1. 他们的 “业务前/中/后台” 是这样的

    caf4b70687aee0f65d747f30fad9d7d7.png

    图2. 他们 “业务前/中/后台” 的功能定义

    5fde7b50bb20844165b838d7d6d57057.png

    图3. 他们 “业务前/中/后台” 的组织结构

    在听完他的叙述之后,我忍不住笑出声来,并对他说:“小伙子,你这哪是中台啊?!这分明是三层架构(3-Tier Architecture) 啊……”

    从表情上看,我感觉他有点懵圈,小声问了一句:“三层架构?MVC吗?”

    我摇了摇头,给他从头到底普及了下3-Tier Architecture,并且强调了界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)的分层目的是为了“高内聚,低耦合” 。

    他听完摇了摇头,似乎不太理解,并追问:“那么 ‘业务逻辑层’ 与 ‘业务中台’ 的区别是什么呢?”

    我把他拉到一旁的咖啡厅,找了个座,并在网上翻到一张3-Tier Architecture的结构图,然后对他说:“说实话,虽然单纯通过几张图和口述,我无法了解你们的业务背景与现状。”

    348812e7935d9cb40f4b48aa46e17881.png

    图4. 3-Tier Architecture

    “但你所描述的那个 ‘业务中台’ ,最多只能算是一个软件体系架构中的业务逻辑层,压根跟 ‘中台’ 没半毛钱关系。”

    他听完,一边摇头,一边说:“不对啊,我们技术老大可不是这么说的……”

    我很好奇,忙追问他。

    按他的说法,在他们公司内,大家都认为中台是一种松耦合结构的架构模式,主要是用来解决层与层之间的依赖问题的。

    也就是说,他们公司的 “业务中台” 价值主要体现在以下几点:

    • 把标准化的服务下沉到 ”业务后台”,把非标准化的服务上浮到 “业务中台”。

    • 有了 ”业务后台”,一旦上层的设计改变,对于其调用的底层而言没有任何影响。

    • 大部分的业务需求只需要捣腾 ”业务中/前台”,似乎成本更低,效率更高了。

    听完他的这番言论之后,我愣了近十秒钟,一时间不知道说些什么。大脑给我的第一反应是把一堆 “吐槽” 喷在他脸上,但最终理智还是战胜了冲动。

    我朝他微微的笑了笑,说了一下我的看法。

    就像我在 #请你们不要调侃中台,它是我们赖以生存的镰刀#中讲述的那样,业务中台也好,技术中台也罢,它并不是一种技术实现,而是一种技术战略。而业务逻辑层可不是战略,它只不过是专门用来处理软件业务需求的一层,是用来实现设计模式及组件技术的一种手段。

    21d9a4d35773c7cf05ebe2d940799e8b.png

    说到这里,我还特地跟了一句:“不要被热点名词所迷惑,即使它处在体系架构中的中间位置,也不应该把它称为 ‘中台’。”

    “我个人觉得,你们把这个部门称为 ‘自定义服务事业部’ 更为贴切。”

    说到这里,我特地停顿了下,喝了口咖啡,继续说。

    “当然,刚才叙述的观点主要来源于我自己的实践经验,所以听上去会显得比较武断或片面,但中台战略的兴起在国内主要来自于阿里巴巴的中台战略思想。”

    “在我们系统的演化过程中,我曾多次阅读 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》这本书,在谈到构建业务中台基础的部分,有过这样一些描述,我觉得说的挺到位。”

    说完,我打开阅读笔记给他看。

    ……

    构建业务中台的基础 —— 共享服务体系。

    松耦合的服务带来业务的复用,通过服务的编排助力业务的快速响应和创新。

    反观企业需要通过ESB组件打通不同系统间的交互,实则是因为相关业务领域的业务和数据被以“烟囱式”方式建设的系统分割到了不同的系统中。

    当越来越多的系统都采用自建“轮子”的方式满足自身系统对这部分业务的需求时,之前的这个服务慢慢就少有人问津,当有更好的服务出现或该服务完全满足不了当前业务发展的要求时,也就是这个服务离开历史舞台的时刻。

    1、传统组织结构:我们可以将整个技术团队看做成一个组合精密的流水生产线,源源不断的业务需求进入到这条流水线后,经过流水线上各专业人员的贡献,最终将业务需求以系统的方式输出这条流水线。

    2、FeatureTeam:不同角色的人员(架构师、开发人员、UED工程师等)组建成了一个新的组织,每一个这样的组织都针对某一服务中心提供持续的服务能力开发及运维,更准确说是基于这一服务中心的业务能力进行“运营”。

    ……

    看完这段文字,我问他:“你瞧,根据阿里中台战略的定义,再结合到刚才的叙述,你发现了什么?”

    他摇了摇头,看着我。

    在我看来,你们那个 “业务中台” 是 用来做服务编排的,作用是助力业务的快速响应和创新,而你们那个 “业务后台” 是松耦合的服务带来业务的复用,杜绝重复造轮子的现象。

    “当然,这样的说法不仅不科学,而且有点死拉硬拽的味道,但我觉得两者之间的道理是相通的。”

    听完我的话,这小伙子突然站了起来,冲着我说:“王老师,是不是我们老大在忽悠我们啊?那么长时间,很多人之所以留在这破公司卖命,就因为一直觉得自己做的是行业先进技术啊!”

    我也站了起来,并拍了拍他的肩头示意他冷静,并让他坐下。

    随后,我用缓和了下语气对他说:“首先,我不仅没有资格来对你们公司指指点点,更没有底气在仅知道这点皮毛信息的前提下来对某某某说三道四,这跟耍流氓没什么区别。”

    “我只想说,中台,的确是在现阶段来看当下最热的一个造势名词。既然是造势名词,这就意味着可以成为企业重要抓手和杠杆,可大干一番。”

    “说白了,就是在很多时候,这些热点或是概念,它主要的作用是用来对齐思想,找到战友的一种方式。”

    4918788a929c928c1613f6a8d7a92657.png

    我常说,一切抛开业务、组织及历史债的架构设计都是耍流氓。

    那么啥叫好架构?啥叫牛逼的技术老大?

    在我看来,在国内的大部分企业中,如果有谁能用一种理念团结人心,再加上能用一套能落地的实战方式,最终满足公司在业务发展上的需要,那就可以了。

    很显然,中台这个词,似乎是这几年里最适合的粘合剂。

    至于你家的数据中台都有哪些标准?他家的业务中台对人才的需求标准都有哪些?还是交给学术界的朋友们去琢磨吧。

    对我们来说,意义并不大。

    END

    展开全文
  • 通俗易懂的高内聚低耦合概念
  • 我们常听一些厉害的程序员说过高内聚低耦合,小伙伴们知道它们是什么意思吗?下面听小编为你解析一下。什么是低耦合?官方的说,耦合就是元素与元素之间的连接、感知与依赖量度。元素代表什么?这里的元素代指各种...
  • 最简单理解高内聚低耦合

    千次阅读 2019-09-07 08:49:15
    低耦合耦合就是元素与元素之间的连接,感知和依赖量度。这里说的元素即是功能,对象,系统,子系统。模块。 例如:现在有方法A和方法B 我们在A元素去调用B元素,当B元素有问题或者不存在的时候,A元素就不能正常...
  • 理解高内聚低耦合

    万次阅读 多人点赞 2018-09-13 11:07:10
    低耦合耦合就是元素与元素之间的连接,感知和依赖量度。这里说的元素即是功能,对象,系统,子系统。模块。 例如:现在有方法A和方法B 我们在A元素去调用B元素,当B元素有问题或者不存在的时候,A元素就不能...
  • 什么是高内聚低耦合

    万次阅读 多人点赞 2019-07-08 17:58:04
    总是提到高内聚低耦合,往往同学们在学习过程中,对这个概念都不是很清楚,下面我们就这个问题,简单描述,彻底搞懂什么是高内聚低耦合 搞清楚模块是什么 模块就是从系统层次去分成不同的部分,每个部分就是一个...
  • --------------------------------------------- -- 时间:2019-03-06 -- 创建人:Ruo_Xiao ...---------------------...1、高内聚:将功能相关的部分尽量整合在一块,使其聚合。 2、低耦合:将功能不相关的模块尽量分...
  • 轻松理解低耦合|高内聚

    千次阅读 2018-09-14 16:26:05
     首先我们来看看内聚的含义:软件含义上的内聚其实是从化学中的分子的内聚演变过来的,化学中的分子间的作用力,作用力强则表现为内聚程度。在软件中内聚程度的高低,标识着软件设计的好坏。  我们在进行架构...
  • 三层架构什么是高内聚低耦合? 什么是高内聚低耦合内聚是什么意思? 模块内部的代码, 相互之间的联系越强,内聚就越, 模块的独立性就越好。 一个模块应该尽量的独立,去完成独立的功能!如果有代码非得引入到...
  • 高内聚低耦合 理解

    2019-09-18 16:58:40
    高内聚 ,类的各司其职,只管自己分内的事,不干涉其他类功能职责(一个类只干一件事)。这种分工越明确内聚低耦合 ,类中对其他类的依赖、需求少,只靠自己就能干好活。这种依赖性越,越独立,耦合...
  • 设计模式追求的目的就是“高内聚低耦合”,在实际编程中运用设计模式能够使我们工程代码更规范、重用性更,同时也能保证代码的可靠性、提高开发效率。 一、概述 面向对象编程有七大原则,即经常提到的设计模式...
  • 高内聚低耦合’是相对于代码而言,一个项目中: 每个模块之间相互联系的紧密程度,模块之间联系越紧密,则耦合性越,模块的独立性就越差!反之同理; 一个模块中各个元素之间的联系的紧密程度,如果各个元素...
  • 3分钟Tips:用大白话告诉你什么是低耦合|高内聚

    万次阅读 多人点赞 2018-03-08 20:07:49
    我的机器学习教程「美团」算法工程师带你入门机器学习 已经开始更新了,欢迎大家订阅~ 任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,...1、高内聚 ...
  • 高内聚低耦合 浅析

    2016-03-31 21:00:00
    内聚是从功能角度来度量模块内的联系,一个好的内聚...内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度。   所谓高内聚是指一个软件模块是由相关性很强的...
  • 面对对象原则:高内聚低耦合

    千次阅读 2016-06-24 21:18:27
    划分摸块的一个准则就是高内聚低耦合。 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否,偶合度是否.每一个类完成特定的独立的功能,这个就是高内聚耦合就是类之间...
  • 设计模式追求的目的就是“高内聚低耦合”,在实际编程中运用设计模式能够使我们工程代码更规范、重用性更,同时也能保证代码的可靠性、提高开发效率。   一、概述  面向对象编程有七大原则,即经常...
  • 高内聚低耦合 浅解

    千次阅读 2016-04-05 12:09:00
    内聚是从功能角度来度量模块内的联系,一个好的内聚...内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度。   所谓高内聚是指一个软件模块是由相关性很强的代码组
  • 划分摸块的一个准则就是高内聚低耦合。 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否,偶合度是否. 每一个类完成特定的独立的功能,这个就是高内聚耦合就是类...
  • 浅析“高内聚低耦合

    千次阅读 2016-03-02 22:11:09
    高内聚低耦合多聚合聚合,是指多个元素在一起使用,组成新的元素;在Java中有“组合类”一说:一个类是由其他的类组合而成的,因此新组成的类就拥有了其组合类的属性和方法。少继承继承,是指一个类继承自另一个类...
  • 1.单一职责原则  一个接口或类者只负责一项职责。... 一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责...
  • 软件设计之—— 高内聚低耦合
  • 低耦合高内聚 很多小伙伴不理解低耦合高内聚什么意思?我给大家通俗的讲一下 低耦合 解决冗余(rongyu)代码,提高代码重复使用率 冗余:很多相似的代码
  • 划分摸块的一个准则就是高内聚低耦合。 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否,偶合度是否. 每一个类完成特定的独立的功能,这个就是高内聚耦合就是类...
  • 这让我突然想起内聚耦合这两个名词。我们一直追求着,内聚,耦合。对于耦合,我粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子...
  • 高内聚,低耦合的概念剖析

    千次阅读 2012-08-22 23:34:36
     内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系;  耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,701
精华内容 3,480
关键字:

高内聚低耦合通俗理解

友情链接: bios.rar