什么是IOC
Inversion of Control —— 控制反转
IOC 作为Spring的核心,对于Spring框架讲,是由Spring负责控制对象的生命周期和对象间的关系
- 传统开发模式: 对象之间互相依赖
- IOC开发模式:IOC容器安排对象之间的依赖
你只需要告诉Spring 你是什么 你需要什么 你的要求
Spring便可在你需要的东西在适当的时候提供给你
并把你提供给需要你的人
(大概理解成Spring是个大Boss?)
传统模式 入口是你 你去主动要一个东西 你就是控制方 此模式成为控制正转
而在IOC模式下 你需要管Spring去要这个东西 这时候你不再是控制方 而变为请求者 同时也是调用者 这便是控制反转。
19/4/8 补充
至于依赖注入DI(Dependency Injection) 便是IOC控制反转的别称,他表示了在IOC容器在运行期间,动态的将某种依赖关系注入到对象当中。控制反转和依赖注入个人理解大概意思是通过主客观不同角度来叙述这件事。(总之IOC就是DI,DI便是IOC)目前先这样理解。
通俗的理解
“这样的模式 虽然你的控制能力减少了 但在这同时 需要操心的事也就自然少了”
这也是IOC模式优点之一 “大部分的事都不用你去操心,当然轻松太多了!”
(其实生活中也是如此 2333)
举几个蛮有意思的列子
Example1 找女朋友
传统开发模式 :
想脱单
随缘/主动认识她 寻找符合自己要求的
通过朋友/其他py方式获得她的联系方式
交流
确认关系
IOC开发模式:
想脱单
找婚介中心 提出要求 由对方介绍
合适 确认关系/不合适 抛出错误
Example2 房子
传统开发模式:
需要房子
自己寻找建设房屋所需材料
按照要求施工建设
入住
IOC开发模式:
需要房子
询问房产中介/开发商 说出需求 介绍
购买 并入住
Example3 肚子饿
传统开发模式
饿
到菜市场
买西红柿、黄瓜、鸡蛋、猪肉、牛肉、鱼肉。。。
回家处理食材 烹饪
吃饭
IOC开发模式
饿
打开”饿xx“ app 订购外卖 根据要求提供自己需要的外卖
食用