关于 高内聚 和 低耦合 的理解

article/2025/8/30 14:16:40

随着一个程序逻辑越来越多,就难免需要微服务来保证程序的高可用性。一个服务宕机或者出问题了,不影响其他的服务。

只要有微服务的存在,两个服务之间有许多代码需要共用。

高内聚低耦合是一种程序设计的思想,高内聚的本质也就抽象和封装,目的是为了代码结构清晰,减少代码量。低耦合的目的是为了不同服务之间不同的业务代码不混用,降低了整体宕机的风险。

当然,如果说抽象和封装的高内聚部分的代码如果出现问题,那可能还是会整体宕机。单元测试还是有必要搞一下。

高内聚:

  1. 模型或业务相关的方法,都放在相同的文件里。
  2. 再进一步,当某个模型或业务特别复杂之后,需要拆分文件,这些文件放在同一个文件夹内。

这就是我理解的高内聚了。核心是代码层面,高内聚的前提核心是低耦合。否则的话,就会在不同高内聚的服务中,出现大量重复的代码。所以,

低耦合:
不同服务之间的代码减少或禁止相互调用。

把通用逻辑都抽离成一个一个的方法,方便再不同服务间直接调用。

不同服务面对的是一个一个的通用(模块的)接口,这些通用的接口的组合,再加上自己服务的其他逻辑,就变成了一个微服务。

服务与模块分离

  1. 服务与模块分离,这样我在写不同的服务(server)的时候,面对的是一个个的模块(Module)层,只需要根据业务逻辑,把按照新的规则调用就好了。
  2. 由于新增服务带来的 模块 或 模块内容的添加,也只需要再对应的模块新增通用代码即可,一旦新增,其他服务也方便直接调用。

http://chatgpt.dhexx.cn/article/JE1FyacJ.shtml

相关文章

【架构基础】高内聚低耦合

软件设计目标:实现需求、易于重用、易于理解、没有冗余。 Dont reinvent the wheel, just realign it. --Anthony J D’ Angelo 高内聚低耦合,是软件工程中判断软件设计好坏的标准。主要评判模块或类的内聚性是否高,耦合度是否低。目的是使…

神秘的高内聚与低耦合举例

内聚类型: 1.巧合内聚 / 偶然内聚 模块的各成分之间没有关联,只是把分散的功能合并在一起。 例:A模块中有三条语句(一条赋值,一条求和,一条传参),表面上看不出任何联系,但…

高内聚,低耦合的实现方式

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

什么是高内聚,低耦合?

高内聚,低耦合是一个老生常谈的话题,所以拿出来说一下 我们在看Linux的一些资料,或者是在面试,又或者跟一个比较牛的大佬讨论技术的时候,可能会听到这个概念。 所以,什么是高内聚,低耦合呢&…

浅谈高内聚低耦合

前言 高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,看类的内聚性是否高,耦合度是否低。 概念 内聚关注模块内部的元素结合程度,耦合关注模块之间的依赖程度。 内聚性&a…

什么是高内聚低耦合

总是提到高内聚低耦合,往往同学们在学习过程中,对这个概念都不是很清楚,下面我们就这个问题,简单描述,彻底搞懂什么是高内聚低耦合 搞清楚模块是什么 模块就是从系统层次去分成不同的部分,每个部分就是一…

3分钟Tips:用大白话告诉你什么是低耦合|高内聚

1、高内聚 首先我们来看看内聚的含义:软件含义上的内聚其实是从化学中的分子的内聚演变过来的,化学中的分子间的作用力,作用力强则表现为内聚程度高。在软件中内聚程度的高低,标识着软件设计的好坏。 我们在进行架构设计时的内聚高低是指&…

Java基础案例集

目录 买飞机票 找素数 验证码生成 评委打分 数字加密 买飞机票 需求:机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折&…

java——编程案例

文章目录 案例1:买飞机票案例2:找素数案例3:开发验证码案例4:数组元素的复制案例5:评委打分案例6:数字加密案例7:模拟双色球 案例1:买飞机票 import java.util.Scanner; public clas…

#Java实例(一)

实例1(使用一维数组将1-12月各月的天数输出) 在Java集合中一维数组是常见的一种数据结构。 public class helloJava {public static void main(String[] args) {// TODO 自动生成的方法存根int day[]new int[] {31,28,31,30,31,30,31,31,30,31,30,31};…

java案例1

目录 需求:一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断该月份属于哪个季 节,并输出。 输出结果 需求:一年有12个月,分属于春夏秋冬4个季节,键盘录入一个…

java实例是什么_java 什么是实例

java 什么是实例 java中实例就是对象,是某个类的一个对象。类只是一个抽象的东西,对象才是实在的东东。所以叫实例。 我们可以把new出来的对象叫做实例,说白了就是这个new出来的“东西”,叫它对象也可以,叫它实例也可以…

Java案例

(if 语句)*托运计费问题: 当货物重量小于20 公斤的时候,收费5 元,大于20 公斤小于100 公斤的时 候超出20 公斤的部分按每0.2 元每公斤计费,如果超出100 公斤的时候,超出的部分按照每公斤0.15 元…

java实例对象

应用程序想要完成具体的功能,仅有类是远远不够的,还需要想据类创建实例对象。在Java程序中,可以使思new关键字来创建对象,具体语法格式如下:类名 对象名称 new 类名(); 例如&#x…

JAVA实例

JAVA实例 1. 类(class)与对象(object)      Class类注释对于Class的定义: Class 类的实例表示正在运行的 Java 应用程序中的类和接口。Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用…

CH2-Java编程基础(7个案例实现)

【案例2-1】 库房出入货物程序设计 【案例介绍】 任务描述 ​ 现要对华为和小米两种手机产品进行入库,本案例要求编写一个模拟商品入库的程序,可以在控制台输入入库商品的数量,最后打印出仓库中所有商品详细信息以及所有商品的总库存数和库…

SQL关键字模糊查询

在对应的需要模糊查询的字段前将去除 改为like %${et.questionContent}%即可 本例中用et.questionContent举例

SQL模糊查询(Like, Regexp)

先创建一张表 drop table if exists samplelike; CREATE TABLE samplelike ( strcol VARCHAR(6) NOT NULL PRIMARY KEY); -- DML :插入数据 START TRANSACTION; -- 开始事务 INSERT INTO samplelike (strcol) VALUES (abcddd); INSERT INTO samplelike (strcol) VA…

sql模糊查询like并使用concat拼接

模糊查询insure_company,左起0104开头,右边模糊匹配。(like 搭配%表示模糊匹配,concat拼接),claim_date同。 放入mapper.xml文件中时,只需用#{ 参数名 } 代替sql查询中的具体数据即可。

mysql 模糊查询时间段_关于SQL模糊查询日期时间的方法

展开全部 有以下三种方法: 1、Convert转成String,在用Like查询 select * from table1 where convert(varchar,yourtime,120) like 2017-06-30% 2、Between select * from table1 where yourtime between 2017-06-30 0:00:00 and 2017-06-30 24:59:59…