日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

依赖倒置(DIP),控制反转(IoC)与依赖注入(DI)

發布時間:2025/6/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 依赖倒置(DIP),控制反转(IoC)与依赖注入(DI) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DIP,IoC與DI概念解析

依賴倒置
DIP(Dependency Inversion Principle)

DIP的兩大原則:
1、高層模塊不應該依賴于低層模塊,二者都應該依賴于抽象。
2、抽象不應該依賴于細節,細節應該依賴于抽象。

具體來講,依賴倒置的核心思想是針對接口而不是實現編程。
應用DIP可以降低模塊之間的耦合度,只要接口保持穩定,模塊可以獨立演化而互不影響。

控制反轉
IoC(Inversion of Control)

通常情況下,class A依賴于class B,或者應用DIP之后依賴于Interface B,那么在運行時,我們必須自行主動的去實例化Interface B接口的實現類實例,然后將其引用傳遞給Class A,在傳統的編程模型下,我們經常這樣干。這樣耦合度仍然很高,我們必須知道所依賴的實現類的一些細節。

而IoC則是將實例化被依賴模塊的責任交出去,不再主動去做依賴裝配工作,這樣我們就可以徹底的只針對接口編程,而無需關心具體的實現。
IoC容器成為一個系統的對象容器和粘合劑,它負責創建對象的實例,并按照它們聲明的依賴關系把它們粘合起來共同工作。通過配置文件或注解的方法,IoC容器會自動的滿足模塊之間的依賴關系,而無需我們再主動去處理依賴關系,只要被動接受就可以了。

這種依賴關系的滿足由主動實現到被動接受的轉變,就是所謂的控制反轉了。
IoC與好萊塢原則(Don't call me,i'll call you!)比較相似。

依賴注入
DI(Dependency Injection)

依賴注入是實現控制反轉的主要方式,另一種方式是依賴查找。

兩者的區別在于,依賴注入是被動的接收對象,而依賴查找是主動索取響應名稱的對象,獲得依賴對象的時間也可以在代碼中自由控制。依賴查找更加主動,在需要的時候通過調用框架提供的方法來獲取對象,獲取時需要提供相關的配置文件路徑、key等信息來確定獲取對象的狀態。比如使用JNDI來查找資源。

依賴注入有以下幾種實現方式:
1、接口注入或叫Type 1型注入。需要實現特定接口以供外部容器注入所依賴類型的對象。這里有一個寫的比較好的例子。這種注入方式很少用到。
2、setter注入或叫Type 2型注入。實現特定屬性的public set方法,來讓外部容器調用傳入所依賴類型的對象。這種注入方式是最常見的。
3、構造函數注入或叫Type 3型注入。實現特定參數的構造函數,在新建對象時傳入所依賴類型的對象。
4、注解注入。基于Java的注解功能,在私有變量前加“@Autowired”等注解,不需要顯式的定義以上三種代碼,便可以讓外部容器傳入對應的對象。該方案相當于定義了public的set方法,但是因為沒有真正的set方法,從而不會為了實現依賴注入導致暴露了不該暴露的接口(因為set方法只想讓容器訪問來注入而并不希望其他依賴此類的對象訪問)。注解注入是比較好的注入實現方式。

總的來講,依賴倒置(DIP)是一種設計原則,控制反轉(IoC)是一種處理對象間依賴關系的方式,與傳統的主動方式正好相反,而依賴注入(DI)則是IoC容器實現控制反轉的主要方式。

總結

以上是生活随笔為你收集整理的依赖倒置(DIP),控制反转(IoC)与依赖注入(DI)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。