1700455114
1700455115
根据以上证明,如果不使用依赖倒置原则就会加重类间的耦合性,降低系统的稳定性,增加并行开发引起的风险,降低代码的可读性和可维护性。承接上面的例子,引入依赖倒置原则后的类图如图3-2所示。
1700455116
1700455117
1700455118
1700455119
1700455120
图3-2 引入依赖倒置原则后的类图
1700455121
1700455122
建立两个接口:IDriver和ICar,分别定义了司机和汽车的各个职能,司机就是驾驶汽车,必须实现drive()方法,其实现过程如代码清单3-5所示。
1700455123
1700455124
代码清单3-5 司机接口
1700455125
1700455126
public interface IDriver{
1700455127
1700455128
//是司机就应该会驾驶汽车
1700455129
1700455130
public void drive(ICar car);
1700455131
1700455132
}
1700455133
1700455134
接口只是一个抽象化的概念,是对一类事物的最抽象描述,具体的实现代码由相应的实现类来完成,Driver实现类如代码清单3-6所示。
1700455135
1700455136
代码清单3-6 司机类的实现
1700455137
1700455138
public class Driver implements IDriver{
1700455139
1700455140
//司机的主要职责就是驾驶汽车
1700455141
1700455142
public void drive(ICar car){
1700455143
1700455144
car.run();
1700455145
1700455146
}
1700455147
1700455148
}
1700455149
1700455150
在IDriver中,通过传入ICar接口实现了抽象之间的依赖关系,Driver实现类也传入了ICar接口,至于到底是哪个型号的Car,需要在高层模块中声明。
1700455151
1700455152
ICar及其两个实现类的实现过程如代码清单3-7所示。
1700455153
1700455154
代码清单3-7 汽车接口及两个实现类
1700455155
1700455156
public interface ICar{
1700455157
1700455158
//是汽车就应该能跑
1700455159
1700455160
public void run();
1700455161
1700455162
}
1700455163
[
上一页 ]
[ :1.700455114e+09 ]
[
下一页 ]