依赖倒转原则

3.3 依赖的三种写法

     依赖是可以传递的,A对象依赖B对象,B又依赖C,C又依赖D…,生生不息,依赖不止,记住一点:只要做到抽象依赖,即使是多层的依赖传递也无所畏惧!

     对象的依赖关系有三种方式来传递,如下所示。

  • 构造函数传递依赖对象

     在类中通过构造函数声明依赖对象,按照依赖注入的说法这种方式叫做构造函数注入,按照这种方式的注入,IDriver和Driver的程序修改后如代码清单3-11所示。

代码清单3-11 构造函数传递依赖对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public interface IDriver {
  
//是司机就应该会驾驶汽车
  
public void drive();
  
}
  
public class Driver implements IDriver{
  
private ICar car;
  
//构造函数注入
  
public Driver(ICar _car){
  
this.car = _car;
  
}
  
//司机的主要职责就是驾驶汽车
  
public void drive(){
  
this.car.run();
  
}
  
}
  • Setter方法传递依赖对象

     在抽象中设置setter方法声明依赖关系,依照依赖注入的说法就是setter依赖注入,按照这种方式的注入,IDriver和Driver的程序修改后如代码清单3-12所示。

代码清单3-12 Setter依赖注入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public interface IDriver {
  
//车辆型号
  
public void setCar(ICar car);
  
//是司机就应该会驾驶汽车
  
public void drive();
  
}
  
public class Driver implements IDriver{
  
private ICar car;
  
public void setCar(ICar car){
  
this.car = car;
  
}
  
//司机的主要职责就是驾驶汽车
  
public void drive(){
  
this.car.run();
  
}
  
}
  • 接口声明依赖对象

     在接口的方法中声明依赖对象,3.2章节的例子就是采用了接口声明依赖的方式,,该方法也叫做接口注入。

你可能感兴趣的:(依赖倒转原则)