`

“强内聚,松耦合”无敌攻略版

阅读更多

一、概念理解
一个软件是由多个子程序组装而成,而一个程序由多个模块(方法)构成。
而内聚就是指程序内的各个模块之间的关系紧密程度,耦合就是各个外部程度

(子程序)之间的关系紧密程度。

耦合式对某个元素与其他元素之间来凝结、感知、和依赖的度量。这里说的元

素可以使功能、对象(类),也可以值系统、子系统、模块。它取决于每个模

块之间的接口的复杂程度,调用模块的方式——即有哪些信息通过接口,一般

模块之间可能的连接方式有七种,耦合性由低到高分别是:非直接耦合,数据

耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合。(其中连接方

式的详细解释待查)
具体说那些是耦合:
1.元素B是元素A的属性,或者元素A引用了元素B的实例(这包括元素A调用的

某个方法,其参数中包含元素B)。

2.元素A调用了元素B的方法。

3.元素A直接或间接成为元素B的子类。

4.元素A是接口B的实现。


高内聚和低耦合其实是一对矛盾的关系,高内聚不是绝对,过度的内聚必将增

减系统中元素之间的依赖,提高耦合度。在李洋等人翻译的《UML和模式应用》

中,将内聚和耦合翻译为软件工程中的阴与阳,是中国人对内聚和耦合的最佳

解释。如果处理好两者的关系,会提高代码下面三个方面的性能:

1、可读性,清晰地功能划分,通过类名或说明就能明白该类的意义,类的某个

属性和方法也都能很容易看出。能提高软件开发的协作和分工效率。

2、复用性:在软件开发中,最低等级的复用是代码的拷贝,然后是函数的复用

对象的复用、组件的复用。如果,一段代码能直接拷贝到别处使用,就是高复

用性的。

3、可维护性和易变性:新的功能和适应新的变化。

 

 

二、如何处理“高内聚”和“低耦合”的关系

1、耦合和内聚是一个矛盾的两个方面。通常应该在层次性上作出折衷,如:模

块内子程序(下一个层次上)应共享数据(有一定的耦合度),而减少全局变

量能降低子程序见的耦合度。
2、我们应该努力降低耦合的是那些可能发生变更的地方,因为降低耦合是有代

价的,是以增加资源耗费和代码复杂度为代价的。
一个软件的业务罗和采用的技术框架往往是容易变化的两个方面。

 

 


三、如何降低耦合


1、通过应用设计模式实现“低耦合”


诸如创建者模式、信息专家模式根本目的就是降低耦合。
目前已有大量的框架帮助我们降低系统的耦合度。比如,使用struts我们可以

应用MVC模型,使页面展现与业务逻辑分离,做到了页面展现与业务逻辑的低耦

合。


2、合理的职责划分


让系统中的对象格斯其责


3、使用接口而不是继承(这一点暂时还不是很理解)


继承就是一种耦合,如果使用了继承,一旦父类发生变化,子类就要改变了。

 

 

四、总结

 

人们易于实现内聚的模块,而人们不易实现松耦合,应为孤独的模块毫无意义

,只有模块间的相互调用相互协调的功过,才能实现系统的目的。而对于模块

间的相互关系的设计,没有一定的经验是难以把握。耦合的强度依赖于:(1)

一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(

3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度

。等等。

如果是人多人协作开发一个系统,比如这次的通信中的客户端和服务器的分工

,应该减少工作相关性或者有明确的接口。

 

分享到:
评论

相关推荐

    强内聚松耦合与测试的关系

    ### 强内聚松耦合的概念与重要性 在软件工程和系统设计领域,强内聚松耦合是两个至关重要的概念,它们不仅对代码质量和系统可维护性有着深远的影响,而且与软件测试密切相关。 #### 强内聚(Strong Cohesion) 强...

    高内聚低耦合

    ### 高内聚低耦合的概念与重要性 在软件工程和系统设计领域,“高内聚低耦合”是一个至关重要的原则。这一原则强调的是如何有效地组织代码或模块,以提高系统的可维护性和扩展性。 #### 什么是高内聚? 高内聚指...

    spring 底耦合高内聚

    spring 底耦合高内聚

    android高内聚低耦合任务事件总线框架

    在Android开发中,高内聚低耦合是一个重要的设计原则,它能提升代码的质量和可维护性。"android高内聚低耦合任务事件总线框架"是指利用事件总线(Event Bus)模式来实现应用组件间的通信,同时遵循高内聚和低耦合的...

    耦合内聚.doc

    耦合与内聚是软件设计中的两个重要概念,它们直接影响到软件的质量、可维护性和可扩展性。耦合描述的是系统中不同模块之间的相互依赖程度,而内聚则衡量一个模块内部元素之间的关联强度和单一性。以下是关于耦合和内...

    软件开发中的问题:什么是高内聚、低耦合?

    ### 软件开发中的问题:什么是高内聚、低耦合? 在软件工程领域,模块化设计是一种常见的策略,旨在提高代码的可维护性和可重用性。在这个过程中,“高内聚、低耦合”成为了衡量模块设计优劣的重要标准之一。下面将...

    图解高内聚与低耦合.docx

    ### 图解高内聚与低耦合 #### 模块的概念 模块是在软件工程中用于组织和管理代码的一种方式,其基本思想是从逻辑上将系统分解成更小、更易于管理的部分。通过这种方式,可以将复杂的系统问题拆解成一系列相对简单的...

    大牛思想(高内聚低耦合).pdf

    大牛思想(高内聚低耦合).pdf

    高内聚低耦合理解

    高内聚低耦合理解,系统的文字帮助你更快速的理解

    论文:高内聚低耦合软件架构的构建_程春蕊

    《高内聚低耦合软件架构的构建》这篇论文深入探讨了软件工程中的核心设计理念——高内聚与低耦合,这是构建高质量、可维护、易于扩展的软件系统的重要原则。高内聚指的是模块内部元素之间的紧密关联,而低耦合则意味...

    一个学生管理系统的demo 高内聚 低耦合

    《学生管理系统Demo:高内聚与低耦合的实践》 在软件工程中,高内聚和低耦合是衡量系统设计质量的重要原则。本文将深入探讨如何在C#环境中,通过一个学生管理系统的示例(demo)来实现这两个概念,并分析其中的关键...

    22丨理论八:如何用迪米特法则(LOD)实现“高内聚、松耦合”? 1

    "高内聚、松耦合"是软件设计中的核心理念,旨在提高代码的可读性和可维护性。高内聚指的是将相关性强的功能聚合在一个模块、类或函数中,使得这些功能紧密联系,减少不必要的相互干扰。这样做的好处是当需要修改某个...

    (优化2)android高内聚低耦合任务事件总线框架

    在Android开发中,高内聚低耦合是一个重要的设计原则,它能提升代码的质量和可维护性。"(优化2)android高内聚低耦合任务事件总线框架"这个标题暗示了我们要讨论的是如何利用事件总线来优化任务处理,以实现更好的...

    耦合内聚.zip

    在软件工程领域,耦合和内聚是衡量模块质量的两个关键指标,它们对系统设计的可维护性、可扩展性和可读性有着深远影响。本文将深入探讨这两个概念,并结合"耦合内聚.zip"中的文档内容进行详细阐述。 首先,耦合...

    高内聚低耦合原则_动力节点Java学院整理

    高内聚低耦合原则 高内聚低耦合原则是软件设计和编码质量评价的一个重要标准。耦合度是衡量模块(类)之间关联、感知和依赖的程度,也是衡量代码独立性的一个指标。降低耦合度可以减少模块间的影响,防止对某一模块...

    松耦合无界零售系统搭建之DDD和微服务实战.pdf

    DDD强调通过业务领域的划分来构建模型,提高业务和技术团队的沟通效率,而微服务则关注将大型系统拆分为独立的服务,实现高内聚、低耦合,每个服务都能独立开发、测试、构建和部署。 在DDD实践中,关键在于识别和...

    检测JavaScript类的内聚耦合Code Smell.pdf

    JavaScript 类的内聚耦合Code Smell检测是软件质量保证的重要方面,因为它涉及到代码的可读性、可维护性和整体设计质量。本文介绍了一种名为JS4C的检测方法,专门针对JavaScript类中的FE(Feature Envy)、DC(Data ...

    模块独立思维导图-耦合、内聚的种类

    ### 模块独立思维导图-耦合、内聚的种类 #### 一、概述 在软件工程领域中,为了确保软件系统具有良好的可维护性和可扩展性,开发者需要重视模块设计的质量。其中,模块独立性是衡量软件设计好坏的重要标准之一。...

    专业技能指导作业-高耦合低内聚.docx

    内聚有如下的种类,它们之间的内聚度由弱到强排列如下:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚等。 在软件设计中,高耦合低内聚原则可以帮助开发者设计出更加灵活、可维护、可扩展的软件系统。

Global site tag (gtag.js) - Google Analytics