什麼是控制反轉(Inversion of Control)

 

ioc

目錄

簡介
原理介紹
 

編輯本段簡介

(Inversion of Control)
 
中文譯爲控制反轉
 
IOC的基本概念是:不創建對象,但是描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。容器負責將這些聯繫在一起。
 

編輯本段原理介紹

早在2004年,Martin Fowler就提出了“哪些方面的控制被反轉了?”這個問題。他總結出是依賴對象的獲得被反轉了。基於這個結論,他爲控制反轉創造了一個更好的名字:依賴注入。許多非凡的應用(比HelloWorld.java更加優美,更加複雜)都是由兩個或是更多的類通過彼此的合作來實現業務邏輯,這使得每個對象都需要,與其合作的對象(也就是它所依賴的對象)的引用。如果這個獲取過程要靠自身實現,那麼如你所見,這將導致代碼高度耦合並且難以測試。
 
IoC 亦稱爲 “依賴倒置原理”("Dependency Inversion Principle") (Martin 2002:127)。差不多所有框架都使用了“倒置注入(Fowler 2004)技巧,這可說是IoC原理的一項應用。SmallTalk,C++, Java 或各種.NET 語言等面向對象程序語言的程序員已使用了這些原理。控制反轉是Spring Framework的核心。
 
其原理是基於OO設計原則的The Hollywood Principle:Don't call us, we'll call you(別找我,我會來找你的)。也就是說,所有的組件都是被動的(Passive),所有的組件初始化和調用都由容器負責。組件處在一個容器當中,由容器負責管理。
 
簡單的來講,就是由容器控制程序之間的關係,而非傳統實現中,由程序代碼直接操控。這也就是所謂“控制反轉”的概念所在:控制權由應用代碼中轉到了外部容器,控制權的轉移,是所謂反轉。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章