首页 > 编程知识 正文

java高内聚低耦合什么意思,怎么理解高内聚低耦合

时间:2023-05-05 03:13:39 阅读:135797 作者:992

一.回顾上一章

上一篇介绍了几种UML2.0语言中新推出的建模图形,但总体而言,这些图形可以提供更多功能

详细表达某种信息。 现在让我们简单回顾一下上节课的内容。

图像

二.摘要

本章主要简要介绍了系统架构的设计模式及其相应的规范。 结合相应的代码

介绍如何遵循系统体系结构的基本设计标准和准则。 本文介绍了一些常见的设计规范。 首先,我们来看一下结构化设计的两个基本原则。

图像

当然既然提出了基本的指导方针,我们如何才能满足指导方针,设计得更好呢? 我

他们可以通过以下手段来达成这种要求

图像

当然,图中显示了功能分离策略,但通过按功能细分需求,每个功能是独立的

是的,当然我们这里也会成为关注点。 详细说明这些原则。

三.本章内容

1、前一章回顾。

2、摘要。

3、本章内容。

4、设计规范和原则。

5、如何满足设计要求。

6、本章总结。

7、系列进度。

8、下一步预告。

四.设计规范和指南。

1、高聚集

我们先来看看凝聚的含义。 软意义上的凝聚,实际上是由化学中分子的凝聚发展而来的,表现为化学中分子间的作用力强,作用力强则凝聚度高。 在软件中

程度的高低,表明了软件设计的好坏。

我们进行体系结构设计时的内聚性的高低是指在设计某个模块或关注点时,模块或关注点内部一系列相关功能的关联度的高低。

例如,订购模块:

图像

一般来说,订单模块包含订单信息、产品信息、谁下的订单(购买者信息)等信息。 这是基础

本,那么,我们设计把相关的功能集成在一起。 当然这是出于大功能(订单管理)方面,当然这些模块也可以细分为产品、订单、会员等子模块。

例如,设计数据库操作支持类的方法如下。

图像

这样,该组件只负责数据库操作。 这样的好处也很明显。 高内

聚合提高了可维护性和可重用性。 低聚集模块表示模块的直接依赖程度较高,如果模块修改了依赖对象,则该模块将不再可用,必须进行相应的修改

可以继续使用。

低聚集模块化设计的缺点,首先是模块功能不单一,模块职责不明确,比较松散,进而完成不相关的功能。 这种设计往往不可取。 因为很重的事情

完善结构。

什么样的模块是高凝聚的,能在系统中很好地使用呢,让我简单说明一下高凝聚的内容吧。

图像

那么,我们在设计过程中如何完成高凝聚呢?

图像

以上基本阐述了高聚集的优势,阐述了如何实现高聚集的步骤和原则。 下一个是我

谈谈高凝聚的坏处吧。

高凝聚有时并非所有情况都采用这样的原则,但当然,高凝聚必须适度。 例如,如果凝聚性的要求很强,就像系统在窗口s32中提供的那样

API,里面的函数太多了,都放在一个Dll里,那么每个函数就完成一个功能。 这样强大的功能会变得复杂,所以并不是完全的高凝聚越高越好,而是要看实际的需求。

当然维护也不是特别方便。

2、低耦合

首先,我们来看一下低键的定义。 低联接用于衡量模块和模块的直接依赖关系。 联轴器当然也可以这样简单地理解。 我想知道电脑的人都知道,CPU和主板之间的

关系,如果是特殊的CPU,CPU就必须使用特殊的主板来支持,但如果这个CPU不依赖于唯一的主板,那么这个CPU和主板的关系就被认为是低耦合的关系。

这里以低联轴器的设计和高联轴器的设计为例进行说明。

image

这是简单的低耦合设计,电气设备和插座之间是低耦合的关系,即使我更换了不同的插座,电气设备也不会

但是,它能正常工作。 因此,简单来说,a模块和b模块之间存在依赖关系,如果即使b发生了变化,a模块也正常工作,则认为a和b是低耦合的。

image

1、笔记本电脑连接音响后可以正常使用。

2、笔记本电脑连接专用耳机正常使用。

为了支持常见的音频,笔记本电脑是通用的,音频与笔记本电脑的直接关系是低耦合的

笔记本电脑和耳机高度耦合,只有专用的耳机可以与笔记本电脑互连使用

因为是通用的,所以笔记本电脑和专用耳机有很强的依赖关系。 当然,最简单的方法是笔记本电脑提供统一的耳机接口,能够满足一般的需求。

我们将来将分析如何构建低耦合的设计。

image

总结

以上说明了低耦合和高凝聚两个原则,但这两个原则是令人满意的。

这两个原则是衡量架构设计好坏的一个参考标准。 说明将来通过功能分离方式满足上述两个原则。

五.如何满足设计

要求

1、如何按功能进行模块化的分离。

我们在将一个系统进行功能划分时,我们一般如下来进行: 首先、我们先把功能职责划分成独立的单元。

例如现在有个B2C系统,那么我们按照B2C的需求,如下分析:

image

我们这里简单的分析下B2C应该具有的功能模块,当然这些模块的划分中,有些模

块还可以继续的分离,当然我这里只是实例分析出来。

2、对分离出来的模块化进行抽象,例如我们以支付为例。

image

这里通过支付接口向外提供服务。那么外界模块不关心支付系统模块的变化,只需要调用接口

即可,如果具体的支付方式,比如支付宝的方式发生改变,在调用支付服务的模块中也不需要做任何的修改就可以正常的提供服务。显然这样的方式是不错的实现方

式。

通常情况下我们在系统分离式只是以接口的方式提供服务,供其他的模块进行使用。在模块内部有大量的信息是不要向外部暴露的,所以模块在设计时访问域的定

义就要划分好,防止因为访问域的定义而对模块的信息造成破坏。

下面我们来看下功能分离在不同的设计理念下都是什么样的表现:

image

上面只是实体性的分析了功能分离的好处及应用的广度,当然我们在后续会结合实例

来讲解如何来实现这样的软件设计模式。当然这只是软件的架构设计,那么如

果细化到具体的实现呢?我们如何去设计每个功能点呢?这就是下章我们要讲解的内容了, 那么本文先列出二种常见的方式。

image

下篇我们将针对设计原则中的实现方式,进行详细的剖析与具体实现进行举例讲解, 希望大家多提意见。

六、本章总结。

本章中主要简单的讲述了软件设计的二个基本的规范与原则:

1、高内聚:描述了模块内部的一系列功能的相关程度,对于功能之间相关度不高或

者根本没有相关性的功能包含在模块中的做法是不可取的。

2、低耦合:描述了模块直接的依赖、感知程度,耦合的衡量标准是从低到高,一般来说耦合度越低越好。

当然有些特殊情况下,可能这二个原则也有矛盾的地方,当然我们还是要根据项目的实际需要及情况进行抉择,当然这二个原则是为了设计提供更好的扩展性、

可读性、可维护性、极高的可复用性,所以要求我们在设计时尽量去满足这二个基本原则。而帮我去达到这二个准则的途径就是通过功能分离及细化来实现这样的准

则。下一篇我们将深入的分析与举例来说明实现这二个原则的各种规范及准则。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。