前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编程思想里面,何谓解耦?

编程思想里面,何谓解耦?

作者头像
陶朱公Boy
发布2023-12-20 18:24:41
1950
发布2023-12-20 18:24:41
举报

前言

知乎上有一个提问:编程思想里面,何谓解耦?

↓↓↓

今天,我们就这个话题一起来做个讨论。

我的回答

我的观点认为:在编程中,解耦意味将系统的各个部分之间的依赖关系降低到最小,使得各部分能够独立变化而不会影响到其他部分。

解耦的目标是提高代码的灵活性、可维护性和可扩展性。

核心思想主要涉及到两个方面

一、模块解耦:模块解耦指的是将系统分解为更小的、独立的模块或组件,每个模块负责一个明确定义的功能。

这样,当需要修改系统的某个功能时,只需修改与之相关的模块,而不会影响其他部分。

不知道大家有没有听过传统的MVC架构,它将应用程序划分为三个主要部分:模型、视图、控制层。让它们各施其职,相互隔离,彼此的改动,谁也影响不了谁。

这其实本质就是模块解耦思想的体现。

还有我们在实际项目中将各个划分好的独立业务模块(拿电商场景举例,比如用户中心模块、商品中心模块、活动中心模块、订单中心模块等)前期在一个工程中以多Module形式划分或更简单点直接用package划分,其本质都是模块解耦思想的体现。

(多module示例图)

二、时间解耦:时间解耦指的是系统中的不同部分不应该过于依赖彼此的执行顺序。

模块之间的消息传递或调用应该是异步的或者基于事件的,而不是同步的,这样可以使得系统更灵活,能够适应不同的运行环境和需求变化。

后端开发的同学,相信或多或少都应该知道MQ这个东西。我们也知道它的三大核心特性:异步、解耦、消峰。

这里的解耦指的就是时间维度上的解耦。

生产者压根不需要知道消费者应用的存在。它尽管只要往指定通道发送消息即可。消费者应用如果想要数据,订阅就好。

这里我们总结一下解耦的优势:

  • 可维护性:当系统的一部分需要修改时,解耦使得只需修改与之相关的部分,而不影响其他部分,提高了代码的可维护性。
  • 可测试性:解耦的代码更容易进行单元测试,因为可以单独测试每个模块而不涉及整个系统。
  • 可扩展性:解耦使得系统更容易扩展,可以方便地添加新的模块或功能而不影响已有的部分。

综上,解耦是面向对象设计和软件架构中的重要原则之一,有助于构建更灵活、可维护和可扩展的软件系统。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陶朱公Boy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 我的回答
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档