cuishuangjia 发表于 2013-1-26 15:09:18

Spring趣闻代码

一个初哥在http://www.iteye.com/topic/976391帖中询问什么是spring的控制反转,很多人都回答不到点子上。我就说Spring就是拉皮条的,大家都不以为然,只好开贴普及一下,请看以下代码:

Java代码

   1. interface   MakeLovable(){
   2.   XXOO(MakeLovablelover);
   3. }
   4.   
   5. GirlA implements MakeLovable(){
   6.   XXOO(MakeLovablelover){
   7.   //A skill
   8.   }
   9. }
10.   
11. GirlB implements MakeLovable(){
12.   XXOO(MakeLovablelover){
13.   //B skill
14.   }
15. }
16.   
17. Boy implements MakeLovable(){
18.   XXOO(MakeLovablelover){
19.   //C skill
20.   }
21. }
22.   
23. //强耦合
24. Boyyou = new Boy();
25. GirlA girl = new GirlA();
26. you.XXOO(girl):

interface MakeLovable(){
XXOO(MakeLovablelover);
}

GirlA implements MakeLovable(){
XXOO(MakeLovablelover){
//A skill
}
}

GirlB implements MakeLovable(){
XXOO(MakeLovablelover){
//B skill
}
}

Boy implements MakeLovable(){
XXOO(MakeLovablelover){
//C skill
}
}

//强耦合
Boyyou = new Boy();
GirlA girl = new GirlA();
you.XXOO(girl):




一辈子你只能和一种类型的girl XXOO,你自然不会满意,于是你YY能够这样:

Java代码

   1. //工厂模式
   2. Boyyou = new Boy();
   3. MakeLovable lover= GirlFactory.createGirl();
   4. you.XXOO(lover):

//工厂模式
Boyyou = new Boy();
MakeLovable lover= GirlFactory.createGirl();
you.XXOO(lover):



这时候虽然你过上了逍遥日子,但是每次换一种类型的girl,就要改一下createGirl()方法,久而久之,你又不满意了。
这时,Spring出现后,你的烦恼就解决了:

//依赖注入
Java代码

   1. Boyyou = new Boy();
   2. MakeLovable lover;
   3. setLover(MakeLovable lover);
   4. you.XXOO(lover):

Boyyou = new Boy();
MakeLovable lover;
setLover(MakeLovable lover);
you.XXOO(lover):




所以说Spring就像拉皮条的,你要什么类型的girl,对girl有什么要求(属性),以及XXOO地址告诉他,他记录在一个文件上,等到你需要的时候,他就把girl送过来。当然因为你只要MakeLovable 就可以,给你送来boy和animal也是可能的。
页: [1]
查看完整版本: Spring趣闻代码