控制反轉(Inversion of Control,英文縮寫爲IoC),就是將代碼的調用的控制權,由調用方轉移給被調用方。編程
如圖:修改代碼A類的代碼,才能將B類的對象換成C類。代碼的控制權在A類(調用方)。咱們將這種代碼調用的方式,稱爲強耦合的代碼調用。框架
|
(圖2-1)spa
將上圖的需求,修改成使用Ioc的調用代碼方式。就是將代碼的控制權從調用方法修改成被調用方法,意味着,代碼的調用修改被調用方(咱們也稱爲服務方),不用修改調用方的的代碼。設計
如圖:對象
|
(圖2-2)blog
根據上圖能夠的得出,實現一個IoC的框架,必需要解決兩個問題:接口
1.被調用方,在程序啓動時就要建立好對象,放在一個容器裏面。io
2.調用方使用一個接口或類的引用(不用使用new),就能夠建立得到對象。table
咱們將這種不用new,而是根據接口或者類的引用就能夠從被調用的容器裏得到建立的對象的方式稱爲依賴注入。程序設計
因此,控制反轉(Ioc),就是依賴注入加上面向接口的編程思想的實現。
首先咱們須要知道,一個程序設計的原則。高內聚,低耦合。IoC容器的實現,就是用於統一管理對象與對象的關係。將原本類與類之間的調用關係,變成了引用關係。
下降了類與類之間的耦合度。因此IoC這套理念爲低耦合而生。