ioc是inversion of control的縮寫,多數書籍翻譯成「控制反轉」,還有些書籍翻譯成為「控制反向」或者「控制倒置」。
這概念太抽象了,首先從語言入手 理解這問題。
控制反轉?
誰控制誰,誰反轉。
這根本沒有主語,這理解起來太抽象了。
那麼變成,如下的關係。
class a
}class b
void fun()
}class c
}
上面的例子中,b依賴於a;b控制a的建立。
那麼控制反轉是不是b控制a的建立?
不是期初我也是這麼理解的。
那麼怎麼反轉呢?
就是把依賴物件的建立架構c,
那麼將如下的乙個描述做控制反轉。
c使用b完成乙個機能,b依賴於a,b建立a。
控制反轉後。
c使用b完成乙個機能,b告訴x,我還需要b的幫忙,x說,這個不用你管,用你的時候我自然會把a注入給你。
於是程式變成這樣
class a
}class b
void fun()
}class spring
}class c
}
以上就是控制反轉、依賴注入的過程。
b控制a的建立,變成了spring控制a的建立,等同於c把物件建立的過程都交給了spring來完成。
控制反轉轉的是啥把b對a建立的控制轉給了框架,這裡就相當於spring。
依賴注入,把b對a的依賴轉換成了框架為b做物件注入。
總結一下
反轉就是,把對物件建立的控制轉給了框架。
把依賴的關係用框架注入的方式完成。
IOC控制反轉(依賴注入)
一。什麼叫控制反轉 moattack 墨攻劇本需要乙個英雄,去喊話,墨者革離 這時候劇本就控制liudehua 劉德華 去喊話。這個演員不一定確定是劉德華,我們可能找其他人來喊話,但是這個人必須有乙個功能喊話。所以我們定義了乙個角色介面 geli 演員實現這個介面。我們需要實現劇本只是依賴角色。而不...
控制反轉 IOC 和依賴注入 DI
控制反 從拆解字面上的意思,控制,是指物件建立 銷毀和管理 單例 的控制權,傳統程式設計上這個是交給呼叫方來控制。反轉,是指這些控制權優傳統上的呼叫方反轉為類似乙個容器的東西,統一調配和管理。依賴注入 依賴,其實就是耦合,這裡更多的是呼叫方和操作物件的耦合。注入是指,將某些耦合關係從乙個東西注入到另...
依賴注入(DI)和控制反轉(IOC)
依賴注入是用於實現控制反轉的最常見的方式之一。依賴注入的思想是 當乙個類對另乙個類有依賴時,不在該類內部對依賴的類進行例項化,而是有乙個配置好了的bean.xml檔案,告訴容器所依賴的類,在例項化該類時,容器自動注入乙個依賴的類的例項。傳統的方法就是在類中先例項化依賴的類,然後再呼叫該類中的方法。p...