首页 > 编程语言 > 详细

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

时间:2015-10-10 00:26:02      阅读:251      评论:0      收藏:0      [点我收藏+]

开始好好学习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

如果再依赖注入的配置时,配置为穷人的实现,那我们的代码都不用变,结果就会改变~   嗯,应该理解了。

 

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

原文:http://www.cnblogs.com/qiangweikang/p/4865486.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!