spring ioc 降低耦合度?

0. 前言

经常见到一些帖子以及面试题提到spring ioc可以降低耦合度,大部分为人所接受的说法是从new 对象->接口->工厂->反射的思路去解释[1]。但我总感觉这不是spring给我的真切体验。

1. 什么是耦合度

耦合度通俗的解释就是一个新的需求会对整个项目产生的影响程度。耦合度越大,一个需求新增的变动会给整个项目代码巨大的变动量。
我将OOP场景的变更需求分为几类:

  • 对象本身的变化
    • 对象类型
    • 对象行为
  • 对象间关系的变化
    • 交互形式变化
    • 对象个数增加

[1]中的例子就是介绍了其中一种需求情景:对象行为的变化。如果只是对象某个行为的变化,采用接口编程的形式来规范行为,在修改时只需要修改接口的实现即可。对象类型变化也可以通过新增接口的实现来解决。但需要改变或者新增接口的时候也是比较麻烦的,需要每个调用该接口的地方都做出改变,这时工厂+反射的机制会更好一些。

2. 什么是spring ioc

贴一段比较官方的解释:

Spring IOC(Inversion of Control,控制反转)是Spring框架的核心,它是一种设计模式,用于实现对象的依赖关系的管理。在传统的开发中,对象之间的依赖关系是由程序员手动创建和管理的,而在Spring IOC容器中,对象的依赖关系由容器自动管理和注入。这样可以降低代码的耦合度,提高代码的可维护性和可测试性。Spring IOC容器是一个容器,它可以管理应用程序中的所有对象,包括创建、销毁、注入依赖等。

3. spring ioc 降低了哪方面耦合度

基于第1部分对耦合情形的分类,spring ioc针对对象本身变化和对象间关系的变化都有降低耦合度。
针对对象本身的变化: 通过工厂+反射的机制,当对象本身的类型、行为发生变化时,可以直接修改配置文件(使用注解开发时直接修改接口实现)。
针对对象之间关系的变化:通过对象间的自动装配,让开发者不用去关心对象间的依赖关系,不用设置对象的初始化顺序。在对象间依赖关系发生改变时,无需任何操作(除非产生循环依赖)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fourier_1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值