打字猴:1.70045515e+09
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
1700455164 public class Benz implements ICar{
1700455165
1700455166 //汽车肯定会跑
1700455167
1700455168 public void run(){
1700455169
1700455170 System.out.println(“奔驰汽车开始运行……”);
1700455171
1700455172 }
1700455173
1700455174 }
1700455175
1700455176 public class BMW implements ICar{
1700455177
1700455178 //宝马车当然也可以开动了
1700455179
1700455180 public void run(){
1700455181
1700455182 System.out.println(“宝马汽车开始运行……”);
1700455183
1700455184 }
1700455185
1700455186 }
1700455187
1700455188 在业务场景中,我们贯彻“抽象不应该依赖细节”,也就是我们认为抽象(ICar接口)不依赖BMW和Benz两个实现类(细节),因此在高层次的模块中应用都是抽象,Client的实现过程如代码清单3-8所示。
1700455189
1700455190 代码清单3-8 业务场景
1700455191
1700455192 public class Client{
1700455193
1700455194 public static void main(String[]args){
1700455195
1700455196 IDriver zhangSan=new Driver();
1700455197
1700455198 ICar benz=new Benz();
1700455199
[ 上一页 ]  [ :1.70045515e+09 ]  [ 下一页 ]