![](/img/9/004/nBnauM3X1YTN0cjM3cDM0kzM0MTM4ADO1IDMwADMwAjMxAzL3AzLxQzLt92YucmbvRWdo5Cd0FmL0E2LvoDc0RHa.jpg)
定義
一個軟體實體如果使用的是一個父類的話,那么一定適用於其子類,而且它察覺不出父類對象和子類對象的區別。也就是說,在軟體裡面,把父類都替換成它的子類,程式的行為沒有變化。簡單的說,子類型能夠替換掉它們的父類型。
依賴倒轉原則
A:高層模組不應該依賴於底層模組,兩個都應該依賴抽象。
B:抽象不應該依賴於細節,細節應該依賴於抽象。
詳細
依賴性倒轉其實可以說是面向對象設計的標誌,用哪種語言編程並不是很重要。如果編程時都考慮的是面向抽象編程而不是面向細節編程,即程式中所有的依賴關係都是終止於抽象類或接口,那就是面向對象的設計,反之就是過程化的設計了。
例子
public interface AbstractStranger{
abstract void operator();
}
public class Friend implements AbstractStranger{
public void operator(){};
}
public class SomeOne{
public void operator(){
AbstractStranger stranger=new Friend();
stranger.operator();
}
}
分類
零耦合關系(Nil Couping):兩個類沒有耦合關係。
具體耦合關係(Concrete Couping) :發生在兩個具體的(可實例化)的類之間,經由一個類對一個具體的類的調用而引發的。
抽象耦合關係(Abstract Couping) :發生在一個具體類和一個抽象類(或java接口)之間,使兩個必須發生關係的類之間存在最大的靈活性。