---依賴倒置原則(DIP)

什麼是依賴倒置原則

  • 高層模塊不應該依賴底層模塊,兩者都應該依賴器抽象。
  • 抽象不應該依賴細節,細節應該依賴抽象。
    個人理解,高層模塊和抽象對應Java裏面,應該是抽象類、接口,而底層模塊和細節對應Java裏面,應該就是具體的實現類,放在咱們開發中怎麼理解他們之間的依賴關係呢?假如你需要完成一個功能,但是這個功能,不能自己一個類就能完成的,需要其他的類,那麼這個時候就需要用到其他的類,那麼你依賴的這個類,最好依賴他的父類或者接口。

舉個例子

小王由於想玩一些大型的3D遊戲,但是由於目前自己電腦配置太低了,於是想到去升級自己的電腦,於是他升級的配件有CPU、顯卡、內存條、硬盤,咱們就以升級內存條爲例,目前市場上內存條代次有DDR、DDR2、DDR3、DDR4,小王肯定要想看看自己電腦主板支持什麼樣的代詞,然後去市場選購,這個時候他發現自己需要的DDR3代次的內存條,有不同的廠商產品,那麼他只要根據自己需要的代次,選購就行了,根本不需要區分廠商。那麼爲什麼不同廠商生產的內存的都可以使用呢?哈哈,這個就是依賴倒置原則,每個廠商都遵守不同代次的標準,就行了。所以小王只需要關心內存條的代次就行了,符合自己需要的代次的內存條都是可以使用的,壓根不需要關心什麼廠商生產的。

63d9f2d3572c11df4763bef6652762d0f603c2b1.jpg

代碼中如何依賴

  • 構造函數傳遞依賴對象。
  • Setter方法傳遞依賴的對象。
  • 接口生命依賴的對象,簡稱接口注入。

代碼具體實踐

  • 每個類儘量都有接口和抽象類,或者都擁有。
  • 接口的表面類型儘量是接口或者是抽象類。
    儘量根據具體的業務來進行相關的處理,規則是死的,業務是活的,就像JavaBean,不見得非要搞接口和抽象類繼承下吧。
  • 任何類都不應該從具體了派生。
    如果出現的這種情況,可以看看具體的業務,將兩者提取一個抽象類或者接口,然後兩者在進行繼承。
  • 儘量不要覆寫父類已經實現的方法。
  • 結合里斯替換原則進行使用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章