一个初哥在http://www.iteye.com/topic/976391帖中询问什么是spring的控制反转,很多人都回答不到点子上。我就说Spring就是拉皮条的,大家都不以为然,只好开贴普及一下,请看以下代码:
Java代码
1. interface MakeLovable(){
2. XXOO(MakeLovable lover);
3. }
4.
5. GirlA implements MakeLovable(){
6. XXOO(MakeLovable lover){
7. //A skill
8. }
9. }
10.
11. GirlB implements MakeLovable(){
12. XXOO(MakeLovable lover){
13. //B skill
14. }
15. }
16.
17. Boy implements MakeLovable(){
18. XXOO(MakeLovable lover){
19. //C skill
20. }
21. }
22.
23. //强耦合
24. Boy you = new Boy();
25. GirlA girl = new GirlA();
26. you.XXOO(girl):
interface MakeLovable(){
XXOO(MakeLovable lover);
}
GirlA implements MakeLovable(){
XXOO(MakeLovable lover){
//A skill
}
}
GirlB implements MakeLovable(){
XXOO(MakeLovable lover){
//B skill
}
}
Boy implements MakeLovable(){
XXOO(MakeLovable lover){
//C skill
}
}
//强耦合
Boy you = new Boy();
GirlA girl = new GirlA();
you.XXOO(girl):
一辈子你只能和一种类型的girl XXOO,你自然不会满意,于是你YY能够这样:
Java代码
1. //工厂模式
2. Boy you = new Boy();
3. MakeLovable lover= GirlFactory.createGirl();
4. you.XXOO(lover):
//工厂模式
Boy you = new Boy();
MakeLovable lover= GirlFactory.createGirl();
you.XXOO(lover):
这时候虽然你过上了逍遥日子,但是每次换一种类型的girl,就要改一下createGirl()方法,久而久之,你又不满意了。
这时,Spring出现后,你的烦恼就解决了:
//依赖注入
Java代码
1. Boy you = new Boy();
2. MakeLovable lover;
3. setLover(MakeLovable lover);
4. you.XXOO(lover):
Boy you = new Boy();
MakeLovable lover;
setLover(MakeLovable lover);
you.XXOO(lover):
所以说Spring就像拉皮条的,你要什么类型的girl,对girl有什么要求(属性),以及XXOO地址告诉他,他记录在一个文件上,等到你需要的时候,他就把girl送过来。当然因为你只要MakeLovable 就可以,给你送来boy和animal也是可能的。
分享到:
相关推荐
Spring源代码解析(一):IOC容器 Spring源代码解析(二):IoC容器在Web容器中的启动 Spring源代码解析(三):Spring JDBC Spring源代码解析(四):Spring MVC Spring源代码解析(五):Spring AOP获取Proxy Spring源...
Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码...
Spring源代码解析1:IOC容器.doc Spring源代码解析2:IoC容器在Web容器中的启动.doc Spring源代码解析3:Spring JDBC .doc Spring源代码解析4:Spring MVC .doc Spring源代码解析5:Spring AOP获取Proxy .doc Spring...
精通spring源代码精通spring源代码精通spring源代码精通spring源代码精通spring源代码精通spring源代码
spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码...
【狂神Spring配套课程代码】一共13个模块,大概可以看我的博客,都是自己学配套整理的 欢迎大家作为学习Spring的参考!! 下面附上狂神B站课程网址,和我的博客笔记(共13章) 狂神老师B站课程:...
Spring源代码解析(一):IOC容器.doc
JavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源...
spring源代码
spring-cloud-codegen__Spring Cloud代码生成器
spring入门代码项目,构建过程看这里: https://blog.csdn.net/qq_38815856/article/details/82312679
spring事物代码片段,包含了定义输入传播性,和参与事物的类
SpringIoc示例代码,SpringIoc示例代码,SpringIoc示例代码,SpringIoc示例代码
内容如下: spring.rar [spring_aop1] [spring_aop2] [spring_aop3] [spring_aop4] [spring_autowire_byName] [spring_autowire_byType] [spring_beginning] [spring_hibernate_1] [spring_hibernate_2] ...
JavaEE源代码 spring-coreJavaEE源代码 spring-coreJavaEE源代码 spring-coreJavaEE源代码 spring-coreJavaEE源代码 spring-coreJavaEE源代码 spring-coreJavaEE源代码 spring-coreJavaEE源代码 spring-coreJavaEE源...
罗时飞 精通 spring 源代码
spring 依赖注入,设值注入和构造注入的两种实现代码。 用JUNIT做测试
Spring源代码解析(一):Spring中的事务处理 Spring源代码解析(二):ioc容器在Web容器中的启动 Spring源代码分析(三):Spring JDBC Spring源代码解析(四):Spring MVC Spring源代码解析(五):Spring AOP获取Proxy ...