定義:高層子產品不依賴低層子產品,他們都依賴其抽象;抽象不依賴實作;實作依賴抽象。
總結:一句話就是面向接口程式設計。
舉例說明:定義一個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()方法;
然後在使用時運用接口的方式:這是不是每次添加一個新的交通工具後我們都不需要在去修改調用者的方法了呢?
這就是面向接口程式設計的好處!!!
最後再次總結:依賴倒轉原則 就是面向接口程式設計。