您的位置:首页 > 其它

dependency-injection(依赖注入)

2015-12-30 21:53 281 查看

概念

Inversion of Control: 控制翻转;是一个重要的面向对象编程原则,控制反转就是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。

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

Dependency Injection:依赖注入, 依赖注入模式是指客户类Client不用自己来初始化(new)它所依赖的成员变量IServer,而是等待某个对象创建IServer的适当的(实现类)的对象并将它赋值给Client的成员变量。

sample

classA
{
AInterface a;

A(){}

AMethod()//一个方法
{
a = new AInterfaceImpl();
}
}


这里面
Class A
AInterfaceImpl
就是依赖关系,如果想使用AInterface的另外一个实现就需要更改代码了,依赖注入就是为了解决这种耦合关系的

使用new(对象创建)是一种硬编码,是代码耦合度变得很高,不方便测试.依赖注入简单的讲就是通过外界传入依赖来进行成员变量的初始化

依赖注入的三种实现方式

Contructor Injection(构造函数注入)

public interface IFather {
//method
}


public class Human {
IFather father;
public Human(IFather father) {
this.father = father;
}
}


基于setter,通过JavaBean的属性(setter方法)为可服务对象指定服务

public class Human  {
IFather father;
public void setIFather(IFather father) {
this.father = father;
}
}


接口注入

// 注入功能的interface
public interface InjectFinder {
void injectFinder(IFather father);
}


// 让我们的Human实现接口
public class Human implements InjectFinder   {
IFather father;
public void injectFinder(IFather father) {
this.father = father;
}
}


参考:

dependency-injection

dependency-injection-theory

依赖注入(Dependency Injection)模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: