阅读259 返回首页    go 阿里云 go 技术社区[云栖]


依赖注入 概述

控制反转: 一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。

依赖注入:一种设计模式。一个类对另一个类有依赖时,由容器自动注入。


微笑以下内容来自百度知道

先看几段代码,都是Java
假设你编写了两个类,一个是人(Person),一个是手机(Mobile)。 
人有时候需要用手机打电话,需要用到手机的dialUp方法。 
传统的写法是这样: 

public class Person{
    public boolean makeCall(long number){
        Mobile mobile=new Mobile();
        return mobile.dialUp(number);
    }
}

也就是说,类Person的makeCall方法对Mobile类具有依赖,必须手动生成一个新的实例new   Mobile()才可以进行之后的工作。 

依赖注入的思想是这样,当一个类(Person)对另一个类(Mobile)有依赖时,不再该类(Person)内部对依赖的类(Moblile)进行实例化,而是之前配置一个beans.xml,告诉容器所依赖的类(Mobile),在实例化该类(Person)时,容器自动注入一个所依赖的类(Mobile)的实例。 

依赖注入写法是这样: 

接口: 
public Interface MobileInterface{
    public boolean dialUp(long number);
}

Person类: 
public class Person{
    private MobileInterface mobileInterface;
    public boolean makeCall(long number){
        return this.mobileInterface.dialUp(number);
    }
    public void setMobileInterface(MobileInterface mobileInterface){
        this.mobileInterface=mobileInterface;
    }

}


在xml文件中配置依赖关系 
<bean >
    <property name="mobileInterface">
        <ref local="mobileInterface"/>
    </property>    
</bean>

<bean />


这样,Person类在实现拨打电话的时候,并不知道Mobile类的存在,它只知道调用一个接口MobileInterface,而MobileInterface的具体实现是通过Mobile类完成,并在使用时由容器自动注入,这样大大降低了不同类间相互依赖的关系。

最后更新:2017-04-03 05:40:19

  上一篇:go HTML 概述
  下一篇:go [面试题]sizeof与strlen的区别