首先咱們來看一下定義:java
1.高層模塊不該該依賴低層模塊,二者都應該依賴其抽象函數
2.抽象不該該依賴細節code
3.細節應該依賴抽象對象
下面來看一下uml圖blog
public interface IDriver { //是司機就應該會駕駛汽車 public void drive(ICar car); } public class Driver implements IDriver{ //司機的主要職責就是駕駛汽車 public void drive(ICar car){ car.run(); } } public interface ICar { //是汽車就應該能跑 public void run(); } public class Benz implements ICar{ //汽車確定會跑 public void run(){ System.out.println("奔馳汽車開始運行..."); } } public class BMW implements ICar{ //寶馬車固然也能夠開動了 public void run(){ System.out.println("寶馬汽車開始運行..."); } } public class Client { public static void main(String\[\] args) { IDriver zhangSan = new Driver(); ICar benz = new Benz(); //張三開奔馳車 zhangSan.drive(benz); } }
總結:接口
1.每一個類儘可能都有接口或抽象類,或者抽象類和接口二者都具有class
2.變量的表面類型儘可能是接口或者是抽象類變量
3.任何類都不該該從具體類派生構造函數
4.儘可能不要覆寫基類的方法方法
5.結合里氏替換原則使用
ps:
1.構造函數傳遞依賴對象
2.Setter方法傳遞依賴對象
3.接口聲明依賴對象
歡迎關注個人公衆號