複製鏈接
請複製以下鏈接發送給好友

DIP

(軟件設計原則)

鎖定
依賴倒轉原則的一種表述是:細節應當依賴於抽象,抽象不應當依賴於細節。
另一種描述是:要針對接口編程,不要針對實現編程。意思就是應當使用接口和抽象類而不是具體類進行變量的類型聲明、參數的類型聲明、方法的返回類型聲明以及數據類型的轉換等。要保證這一點,一個具體java類應當只實現java接口和抽象java類中聲明過的方法,而不應當給出多餘的方法。
中文名
依賴倒轉原則
外文名
DIP
表    述
要依賴於抽象,不要依賴於具體
接    口
java
之一:依賴倒轉原則 DIP
依賴倒轉原則(Dependency Inversion Principle)講的是:要依賴於抽象,不要依賴於具體。
依賴倒轉原則的一種表述是:細節應當依賴於抽象,抽象不應當依賴於細節。
另一種描述是:要針對接口編程,不要針對實現編程。意思就是應當使用接口和抽象類而不是具體類進行變量的類型聲明、參數的類型聲明、方法的返回類型聲明以及數據類型的轉換等。要保證這一點,一個具體java類應當只實現java接口和抽象java類中聲明過的方法,而不應當給出多餘的方法。
java接口與java抽象類的區別:
1.java抽象類可以提供某些方法的部分實現,而java接口不可以。
2.一個抽象類的實現只能由這個抽象類的子類給出,一個類最多隻能從一個超類繼承。任何一個實現了一個java接口所規定的方法的類都可以具有這個接口的類型,一個類可以實現任意多個java接口。
3.從代碼重構的角度來説,使用重構接口比重構抽象類要容易多。
4.java接口是定義混合類型(Mixin Type)的理想工具。所謂混合類型,就是一個類的主類型之外的次要類型。
缺省適配模式
聲明類型的工作仍然是由java接口承擔的,但是同時給出的還有一個java抽象類,為這個接口給出一個缺省實現。其他同屬於這個抽象類型的具體類可以選擇實現這個java接口,也可以選擇繼承自這個抽象類。
依賴倒轉原則假定所有的具體類都是會變化的,這也不總是正確的。有一些具體類可能是相當穩定的、不會發生變化的,客户端可以直接依賴於這些具體類型,而不必為此聲明一個抽象類型。