一个初哥在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仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码spring仿写demo代码...
在这个“Spring 入门代码实例”中,我们将深入探讨Spring的依赖注入机制,包括设值注入和构造注入两种方式,并结合JUnit进行测试。 **一、Spring IOC (控制反转) 理念** 控制反转(Inversion of Control,IoC)是...
《Spring入门代码项目详解》 在IT行业中,Spring框架无疑是最受欢迎的Java企业级应用开发框架之一。本项目旨在帮助初学者快速入门Spring,通过实际的代码操作来理解和掌握Spring的核心概念与用法。以下是对每个子...
【狂神Spring配套课程代码】一共13个模块,大概可以看我的博客,都是自己学配套整理的 欢迎大家作为学习Spring的参考!! 下面附上狂神B站课程网址,和我的博客笔记(共13章) 狂神老师B站课程:...
JavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源...
spring-cloud-codegen__Spring Cloud代码生成器
这个"spring 入门示例代码"是一个适合初学者理解并实践Spring框架基础知识的资源包。 在压缩包中,文件通常会包含对整个示例的简要介绍和指导,帮助用户了解如何运行和理解这些代码。由于没有具体的readme内容,...
spring事物代码片段,包含了定义输入传播性,和参与事物的类
《精通Spring源代码》是罗时飞先生关于Spring框架深入解析的一部著作,旨在帮助开发者更深入地理解Spring的工作原理,提升对Java企业级应用开发的掌控能力。本压缩包包含的文件名为“精通Spring源码”,这通常是一个...
《Spring实战》第五版的源代码压缩包"spring实战全部源代码.zip"包含了全面的示例项目,旨在帮助读者深入理解和应用Spring框架。这个压缩包中的"spring-in-action-5-samples-master"目录揭示了书中的各个实战案例,...
内容如下: spring.rar [spring_aop1] [spring_aop2] [spring_aop3] [spring_aop4] [spring_autowire_byName] [spring_autowire_byType] [spring_beginning] [spring_hibernate_1] [spring_hibernate_2] ...
这个压缩包中的“Spring示例代码”可能是为了帮助开发者理解和学习Spring框架的各种功能和用法。下面,我们将深入探讨Spring框架的核心概念、主要模块以及如何使用这些示例代码来提升你的开发技能。 Spring框架的...
【标题】:Spring源代码解析 【描述】深入解析了Spring框架的核心机制,包括IOC容器、事务控制、AOP(面向切面编程)以及数据库访问层的实现,如spring JDBC和Hibernate集成。这些文档详细剖析了Spring框架在实际...
Spring源代码提供了对框架内部工作原理的深入洞察,是开发者提升技能和学习优秀编程实践的理想资源。以下是对Spring源代码的一些详细解释和相关知识点: 1. **模块化设计**: Spring框架由多个模块组成,如Core ...
SpringCloud的项目代码.zipSpringCloud的项目代码.zipSpringCloud的项目代码.zipSpringCloud的项目代码.zipSpringCloud的项目代码.zipSpringCloud的项目代码.zipSpringCloud的项目代码.zipSpringCloud的项目代码....