依赖注入

依赖注入(Dependency Injection),在软件开发中缩写为DI。依赖注入引用了控制反转的思想,因此依赖注入也可被称为控制反转(Inversion of Control, IOC)。控制反转是一个面向对象的编程法则,用来解决计算机程序的耦合问题,一般分为两种类型:依赖注入和依赖查找。简单来说,控制反转是一种思想,而依赖注入是控制反转的一种实现方式。

普通代码:

 当我们对NameFormater进行修改时,比如替换成其他format类,这个时候我们也必须对Student进行修改。当将Student类换成Teacher类时,则必须对Printer进行相应的修改。

可以看到,上面这三个类的耦合性比较高,这个时候依赖注入是一种很好的解决方式。

三种依赖注入方式:

1. 构造器注入

将被依赖对象通过构造函数的参数注入给依赖对象,并且在初始化对象的时候注入。

2. setter方法注入

Service Provider通过调用成员变量提供的setter函数将被依赖对象注入给依赖类。

3. 接口注入

依赖类必须要实现指定的接口,然后实现该接口中的一个函数,该函数就是用于依赖注入。该函数的参数就是要注入的对象。

 下面我们对上面的例子进行修改,为了解耦,我们分别给每个类定义相应的接口,这样类之间并没有直接的关系。

在Printer类构造函数中,Person作为参数传入,这里是构造器注入。

Student类中的属性Formater后面会进行设定,赋值的时候就是setter注入。

这样即使使用其他formater类或者将student替换成其他人物类别时,我们也只需要将program里面的实例化进行修改即可,而不用对其他代码进行修改。

 

posted @ 2022-06-05 18:33  不负当下  阅读(183)  评论(0)    收藏  举报