1. 程式人生 > 其它 >IOC 和DI

IOC 和DI

一.控制反轉和依賴注入概念

案例:
1.去餐廳吃飯時,找個位置坐了下來,服務員拿著菜單向你走來,這時是你要吃飯,但是你不主動找服務員,是服務員找你,服務員主動為你服務
2.你在家,你想喝奶茶,我用手機下單,去購買奶茶,也是別人送上門
這時,本來是你主動找他的事情,但是卻變成了別人主動找你,這就是控制反轉(DI)
3.回到程式碼中,本身是你要去new一個物件,去用這個物件裡面的方法,但是現在變過來了,不需要你主動找,在你這個類沒有真正執行方法的時候,
他就把服務送上門來了(程式啟動的時候,服務已經被注入了),我沒有去請求他,但是系統主動把服務給我了,通過建構函式注入,讓服務注入進來,
有了服務物件,這就是控制反轉,依賴注入(IOC)是控制反轉(DI)的一種手段或者方式

作用

  • 誰依賴於誰:應用程式依賴於IOC容器
  • 為什麼需要依賴:應用程式需要IOC容器來提供物件需要的外部資源
  • 誰注入誰:IOC容器注入應用程式某個物件,應用程式依賴的物件
  • 注入了什麼:就是注入某個物件所需要的外部資源(包括物件,資源,常量資料等)

IOC容器是什麼

在ASP NET CORE 6中的IOC容器就是ServiceCollection,從字面意思理解就是服務收集器或者叫服務集合。它就是存放服務的容器罐子而已,而這裡所謂的服務就是指開發中需要的各種類的統稱。

服務生命週期

服務生命週期分三類:

  • Transint 瞬時生命週期
  • Singleton 單例生命週期
  • Scoped 作用域生命週期

越是無知的人越是覺得自己無所不知(之前的自己) 越是學習的人越是覺得自己會的太少了(現在的自己) 共勉