依賴倒轉(zhuǎn)原則
依賴倒轉(zhuǎn)原則?【 Dependency Inversion Principle(DIP)??? ? 就是在我們編程的時候方法的參數(shù)類型,變量,對于其他具體類的依賴,我們盡量的使用抽象類。
就是說盡量依賴于抽象,而不是依賴于實現(xiàn)。?
???
? 在書中兩種表述:
???? (1),Abstraction should not depend on details.details should depend on abstraction. (抽象不應(yīng)當(dāng)依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)當(dāng)依賴于抽象)。Abstraction就像是建筑物的基礎(chǔ),而其實現(xiàn)類就是在基礎(chǔ)上面一層一層的往上面走。你拆掉最上面那層,和拿走最下面的基礎(chǔ),有什么不同了,這就是差異了。所以Abstraction是要相當(dāng)?shù)姆€(wěn)定,是維護(hù)的重點。也正是因為穩(wěn)定,所以我們盡量的依賴于Abstraction,既是穩(wěn)定系統(tǒng),也是靈活系統(tǒng)。?
???
? (2),Program to an Interface,not an implementation(要針對接口編程,不要針對實現(xiàn)編程)
???? 應(yīng)當(dāng)使用java接口和抽象java類進(jìn)行變量的類型聲明,參數(shù)的類型聲明,方法返回值的類型和數(shù)據(jù)類型的轉(zhuǎn)換。?
???
在這里我就有一個問題了。
???? List l= new Vector();而不要使用 Vector l=new Vector();我就有疑問 如果我一個類B 繼承于類A,B有一些A不存在的方法,而我的方法中我得使用B,這里那就菜了。
?? 所以看到這句話了。保證做到這點,一個具體的類應(yīng)當(dāng)只實現(xiàn)Java接口,和抽象java類中聲明過的方法,而不應(yīng)當(dāng)給出多余的方法。
??????
?? 依賴倒裝原則是很難實現(xiàn)的,在這些原則中,因為從上面也可以看到。還是使用了Vector類這個具體的類,還是對具體的類有依賴,所以,對于依賴倒裝的創(chuàng)建new Vector(),有一個專門的模式,工廠模式,不過只是把違反這個原則的地方壓縮到一個類里面。
posted on 2009-07-02 22:59 luofeng225 閱讀(1159) 評論(3) 編輯 收藏 所屬分類: 設(shè)計模式