設計模式六大原則之依賴倒轉原則


一、依賴倒轉原則

  基本介紹

      (1)高層模塊不應該依賴底層模塊,二者應該依賴其抽象(依賴接口或抽象類,不要依賴具體的子類

      (2)抽象不應該依賴細節,細節應該依賴抽象

      (3)依賴倒轉(倒置)的中心思想是面向接口編程

      (4)使用接口或抽象類的目的是制定好規范,而不涉及任何具體的操作,把展現細節的任務交給他們的實現類去完成。

      (5)依賴倒轉原則是基於這樣的設計理念:相對於細節的多變性,抽象的東西要穩定的多。以抽象為基礎搭建的架構比以細節為基礎的架構要穩定得多。在Java中,抽象多指的是接口或抽象類,細節指的就是具體的實現類。

二、案例演示 

 測試場景:Person類接收消息

 案例地址:https://github.com/Simple-Coder/design-pattern

1、基礎版代碼實現

 分析:完成了Person接收消息的功能

  ①優點:方便,簡單,容易實現

  ②缺點:如果我們獲取的對象是微信、短信呢,則需要新增對應類同時Person類也要增加對應的接收方法(Person目前只支持接收Email)

2、改進版代碼實現

  改進方案:采用依賴倒轉原則,引入一個抽象的接口IReceiver,表示接受者,這樣Person類與接口IReceiver發生依賴,這樣比上述的好處在哪里?Email、微信、短信等屬於接受者(IReceiver)范疇,它們各自實現IReceiver接口即可,這樣就符合依賴倒置原則,核心就是面向接口,細節依賴抽象,而不是抽象依賴細節。這樣設計才能更有彈性、伸縮性。

 三、依賴關系傳遞方式

  在依賴倒轉時,往往進行依賴關系傳遞,有以下3種方式:

1、接口傳遞

2、構造方法傳遞

3、setter方式傳遞

 四、總結

1、低層模塊盡量都要有抽象類或接口,或者兩者都有,程序穩定性更好。

2、變量的聲明類型盡量是抽象類或接口

3、繼承時遵循里氏替換原則  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM