Spring趣闻代码

一个初哥在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也是可能的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值