一个小故事带你了解 Spring IoC
博客搬家,原 blog:https://blog.csdn.net/chensanwa/article/details/105303915
1. 前言
本文参考 Spring 视频教程总结而来, 通过 小红同学 幻想自己是有车一族下班回家,简单抽象下 IoC 基本概念。
2. 有车一族
小红下了班,开着自己的 Audi ,左拐一下,右拐一下,就回家了,真是快活。
咱们用代码来模拟一下:
那么,咱们来分析分析,小红同学回家之路。
1、goHome 中 new Audi() 能表示小红同学有一辆 Audi 么?2、小红同学,能够 new Audi() 么? 一个人能造车么?3、回家,是需要 Audi 么?还是需要 车?4、如果小红,换车了,买了辆 Lamborghini ,咱们需要做什么样的更改?
3. 程序员来凑凑热闹
针对上文讨论的 1234,咱们一一来探讨探讨。
客官请看:
经程序员之手稍加修改, private Audi audi;
即可表明小红有一辆 Audi, 通过构造函数传入,表明了小红的人设就是有车一族(准确的说是有 Audi 车一族)。
那么,3、4 问题呢?(莫慌莫慌,开发哥哥都是很忙了)
。。。。。。。。。。。 隔了十天半个月 。。。
开发哥哥又出来接活(改造)了。
通过声明一个接口 Car
来声明 车 的行为,同时,XiaoHong
声明一个 car
的 feild 表明小红是有车一族(这里才是真正的有车一族)。
在实例化小红(小红人设,说白了就是电影开拍了,找了演员了)的时候,传入 car 即可,这个 car, 不管是 Audi 还是 Lamborghini, 甚至是自行车,小红都能 goHome
。
代码示例:
那么,3,4 问题也都解决了,3(需要的是车),4(换车了,就传入新的 car 的实现类即可)
ok,全剧终。(其实,没完,中途,小红换车了,你懂的)
4. what?
what?剧终了?小红剧照都还没看到呢?
好吧,博主妥协了,决定,给你们谈谈小红的。。。春。。。。。哦不。。。。Spring 。。。。。
听过 Spring 的人,应该都知道,IoC。
IoC 意为控制反转?那么问题来了,控制什么?什么是反转?
控制: 对 Java Bean 对象的生命周期的控制(小红 这个人设在电影的生老病死)
反转: 把 控制权 从 使用者(调用者)的反转交给 Spring Bean 容器来管理
回想一下。最开始的时候,小红自己管理 Audi 的创建,销毁(当然,Java 交给了 GC)。 用代码来表示是这样的:
然后,咱们把对象的创建、销毁(控制权)交给 Spring Bean 容器管理【控制反转】。同时,咱们抽象了下,把 Audi 抽象为 Car,用代码表示是这样的:
什么叫做交给 Spring Bean 容器管理呢? Car 这个类,不是由小红来创建的,而是 Spring 创建扔 bean 容器中,实例化小红(小红用车)的时候,就直接从 bean 容器获取即可。
四不四,一下子就明白了 Spring IoC 控制反转 的意思了哇?很清晰,很明白对不对?
没有明白?好吧,那请移步 ~ _ ~
版权声明: 本文为 InfoQ 作者【lambochen】的原创文章。
原文链接:【http://xie.infoq.cn/article/4bea915d02491e16adae935eb】。文章转载请联系作者。
评论