您的位置:首页 > 编程语言 > Java开发

java 控制反转和依赖注入的理解

2015-10-09 23:25 417 查看
开始好好学习java基础和思想~

控制反转(IOC)是Spring框架的核心思想,用我自己的话说,就是你要做一件事,别自己可劲new了,你就说你要干啥,然后外包出去就好~
依赖注入(DI) 在我浅薄的想法中,就是通过接口的引用和构造方法的表达,将一些事情整好了反过来传给需要用到的地方~

这样做得好处:做到了单一职责,并且提高了复用性,解耦了之后,任你如何实现,使用接口的引用调用的方法,永远不需要改变

举一个栗子:

写个接口,说咱们购物去~

public interface IShopping {
void drive();
String Money();
}


在实现它两下:有钱人购物,没钱人购物 - -!这栗子举的

public class RichMan implements IShopping{
@Override
public void drive() {
System.out.println("Drive By Benz");
}

@Override
public String Money() {
System.out.println("lot`s of money");
return "10000";
}
}


public class PoorGuy implements IShopping{
@Override
public void drive() {
System.out.println("take a walk!");
}

@Override
public String Money() {
System.out.println("nothing");
return "1";
}
}


然后我们出去玩,顺便shopping一下吧~

public class Play {

private IShopping shoppingSomething;

  //使用构造方法,将实现传入
public Play(IShopping shoppingSomething){

this.shoppingSomething = shoppingSomething;
}

public void withgirlFriend(){
shoppingSomething.drive();
shoppingSomething.Money();
}

}


将想用的实现方式,用容器注入进来,这里就模拟下下怎么注入:

public class Containner {

public Play getShopping(){
return new Play(new RichMan());
}
}


测试一下:

public static void main(String[] args) {
Containner containner = new Containner();
Play play =  containner.getShopping();
play.withgirlFriend();
}


结果是:

Drive By Benz
lot`s of money

如果再依赖注入的配置时,配置为穷人的实现,那我们的代码都不用变,结果就会改变~ 嗯,应该理解了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: