依賴倒置原則(DIP)
DIP
,Dependence Inversion Principle
, 依賴倒置原則
依賴倒置原則的定義
原始定義:高層模塊不要依賴低層模塊,兩種都應該依賴抽象。抽象不應該依賴細節,細節應該依賴抽象。
核心思想是:要面向接口編程,不要面向實現編程。
依賴倒置原則的作用
- 降低類之間的耦合性
- 提高系統的穩定性
- 減少並行開發引起的風險
- 提高代碼的可讀性和可維護性
依賴倒置原則的實現方法
顧客購物程序實例:
-
反應“顧客類”與“商店類”的關係。商店類有
sell
方法,顧客通過該方法進行購物。深圳店的購物可以這麼寫:
/** * 顧客 * * @name: Customer * @author: terwer * @date: 2022-04-15 22:42 **/ public class Customer { public void shoping(ShenzhenShop shop) { System.out.println(shop.sell()); } }
-
上面設計存在缺陷,加入新加入廣州門店,上面的代碼就不能複用了。需要修改代碼:
/** * 顧客 * * @name: Customer * @author: terwer * @date: 2022-04-15 22:42 **/ public class Customer { public void shoping(GuangzhouShop shop) { System.out.println(shop.sell()); } }
-
顧客每換一次門店,就要修改一次代碼,違背了開閉原則。
存在問題的原因:顧客類設計的時候同商店類綁定了,違背了依賴倒置原則。
public class Customer { public void shoping(Shop shop) { System.out.println(shop.sell()); } }