定义:高层模块不依赖低层模块,他们都依赖其抽象;抽象不依赖实现;实现依赖抽象。
总结:一句话就是面向接口编程。
举例说明:定义一个Person类 ;里面有一个Driver()的方法;传入一个Car的参数;然后调用Car。move方法
public class Person{ public void drive(Car car) { car.move(); } } public class Car { puboic void move() { system.out.println(" 小汽车移动 "); } }如果现在我们要开的是一个Mpv呢?修改代码如下:
public class Person{ public void drive(Mpv mpv) { mpv.move(); } } public class Car { puboic void move() { system.out.println(" 小汽车移动 "); } } public class Mpv { puboic void move() { system.out.println(" mpv移动 "); } }这样子的话我们是不是修改了类里的方法参数;当然你也可以重载一个drive()方法。如果我们面向接口编程会是什么样子呢?
public class Person{ public void drive(Vehicle vehicle) { vehicle.move(); } } public interface Vehicle { public void move(); } public class Car implements Vehicle{ puboic void move() { system.out.println(" 小汽车移动 "); } } public class Mpv implements Vehicle{ puboic void move() { system.out.println(" mpv移动 "); } }我们先抽象交通工具类Vehicle,里面定义一个抽象方法move();实现类不管是Car,Mpv都实现 move()方法;
然后在使用时运用接口的方式:这是不是每次添加一个新的交通工具后我们都不需要在去修改调用者的方法了呢?
这就是面向接口编程的好处!!!
最后再次总结:依赖倒转原则 就是面向接口编程。