加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖倒转原则

发布时间:2020-12-14 05:15:52 所属栏目:百科 来源:网络整理
导读:3.3 依赖的三种写法 ???? 依赖是可以传递的,A对象依赖B对象,B又依赖C,C又依赖D…,生生不息,依赖不止,记住一点:只要做到抽象依赖,即使是多层的依赖传递也无所畏惧! ???? 对象的依赖关系有三种方式来传递,如下所示。 构造函数传递依赖对象 ???? 在类

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 {
??
//是司机就应该会驾驶汽车
??
void?drive();
??
}
??
class?Driver implements?IDriver{
??
private?ICar car;
??
//构造函数注入
??
public?Driver(ICar _car){
??
this.car = _car;
??
}
??
//司机的主要职责就是驾驶汽车
??
drive(){
??
.car.run();
??
}
??
}
  • Setter方法传递依赖对象

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

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

29
30
31
//车辆型号
setCar(ICar car);
//是司机就应该会驾驶汽车
drive();
}
IDriver{
ICar car;
setCar(ICar car){
.car = car;
}
//司机的主要职责就是驾驶汽车
drive(){
.car.run();
}
??
  • 接口声明依赖对象
  • ???? 在接口的方法中声明依赖对象,3.2章节的例子就是采用了接口声明依赖的方式,,该方法也叫做接口注入。

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!