原文:六大设计原则(三)DIP依赖倒置原则
依赖倒置原则DIP(Dependence Inversion Principle)
依赖倒置原则的含义
- 高层模块不能依赖低层模块,二者都应该依赖其抽象。
- 抽象不应该依赖于细节。
- 细节应该依赖抽象。
什么是高层模块?低层模块?
每一个原子逻辑就是低层模块,原子逻辑再组就是高层模块。
什么是抽象和细节?
抽象是抽象类,不可被实例化。
细节是实现类,比如实现的接口或继承抽象类的子类,可以被实例化。
表现在Java语言中就是面向接口编程
- 模块间的依赖是通过抽象来实现的,具体的实现类之间不能发生直接的依赖。
- 接口或抽象类不能依赖与实现类。
- 实现类依赖接口或抽象类。
我们假设有三个类,一个为场景类,一个为司机类,一个为奔驰类。通过这三个类我们便可以实现司机开动汽车这个场景。如图
具体的实现代码如下
司机类
package des.DIP;
//司机类
public class Driver {
//司机驾驶车 紧耦合
public void drive(Benze benze){
benze.run();
}
//司机驾驶宝马车 紧耦合
public void drive(BMW bmw){
bmw.run();
}
}
奔驰类
package des.DIP;
//奔驰车
public class Benze {
public void run(){
System.out.print("奔驰车开始运行...");
}
}
场景类
package des.DIP;
//场景类
public class Client {
public static void main(String[] args){
//创建一个司机
Driver zs = new Driver();
//创建一个奔驰车
Benze benze = new Benze()