IOC的一個重點是在程序運行中,動態的向某個對象提供它所需要的其他對象。這一點是通過DI來實現的。Autofac則是比較流行的一款IOC容器。
IoC和DI有什麼關係呢?其實它們是同一個概念的不同角度描述。
一、IOC
IOC—Inversion of Control,即“控制反轉”,不是什麼技術,而是一種設計思想,一種面向對象編程法則,目的是程序解耦。
誰控制誰,控制什麼?
傳統程序設計,我們直接通過new object()創建對象,是程序主動去創建依賴對象;而IoC是有專門一個容器來創建這些對象,即由Ioc容器來控制對象的創建。
爲何叫控制反轉?
有反轉就有正轉,傳統程序是我們自己主動創建並控制依賴對象,叫正轉。
而反轉則是由容器來幫忙創建及注入依賴對象,由容器幫我們查找及注入依賴對象,對象只是被動的接受依賴對象。
二、DI
DI—Dependency Injection,即“依賴注入”
比如對象A需要操作數據庫,以前我們總是要在A中自己編寫代碼來獲得一個Connection對象,有了Autofac我們就只需要告訴Autofac,A中需要一個Connection,至於這個Connection怎麼構造,何時構造,A不需要知道。在系統運行時,Autofac會在適當的時候製造一個Connection,然後像打針一樣,注射到A當中,這樣就完成了對各個對象之間關係的控制。A需要依賴 Connection才能正常運行,而這個Connection是由Autofac注入到A中的,依賴注入的名字就這麼來的。
三、Autofac
Autofac是一個開源的依賴注入框架,通過NuGet安裝:
中文文檔https://autofaccn.readthedocs.io/zh/latest/
使用方法https://www.jianshu.com/p/f5d6346b0a7b
...