IoC (Inversion of Control) 中文譯為控制反轉(zhuǎn) 又稱(chēng)為“依賴(lài)注入”(DI =Dependence Injection) IOC的基本概念是:不創(chuàng)建對(duì)象,,但是描述創(chuàng)建它們的方式,。在代碼中不直接與對(duì)象和服務(wù)連接,但在配置文件中描述哪一個(gè)組件需要哪一項(xiàng)服務(wù),。容器負(fù)責(zé)將這些聯(lián)系在一起,。 其原理是基于OO設(shè)計(jì)原則的The Hollywood Principle:Don't call us, we'll call you(別找我,我會(huì)來(lái)找你的),。也就是說(shuō),,所有的組件都是被動(dòng)的(Passive),所有的組件初始化和調(diào)用都由容器負(fù)責(zé),。組件處在一個(gè)容器當(dāng)中,,由容器負(fù)責(zé)管理。 簡(jiǎn)單的來(lái)講,,就是由容器控制程序之間的關(guān)系,,而非傳統(tǒng)實(shí)現(xiàn)中,由程序代碼直接操控,。這也就是所謂“控制反轉(zhuǎn)”的概念所在:控制權(quán)由應(yīng)用代碼中轉(zhuǎn)到了外部容器,,控制權(quán)的轉(zhuǎn)移,是所謂反轉(zhuǎn),。 國(guó)際奧林匹克委員會(huì) International Olympic Committee簡(jiǎn)稱(chēng)IOC ----------------------------------------------------------------------------- 通???架都是設(shè)計(jì) 在先,而應(yīng) 用程序則設(shè) 計(jì)在后,,這 種前輩擁有 主 導(dǎo) 權(quán),, 進(jìn)而「控制」后輩之 情形,就通稱(chēng)為「反向控制」,。顧名思義,, IoC(Inversion of Control)就是「反向控制」之意思。而它是相對(duì) 于「正向控制」一 詞,,所以在本節(jié) 裡,,將先介 紹「正向控制 (溝通)」之涵意,就能迅速 理解「反向 溝通」之意義了,。 IoC 觀念和機(jī)制源自于 OO 語(yǔ)言(如 C++,、Java 等)的類(lèi)別繼承 體系, 例如 Java 語(yǔ)言中,,父 類(lèi)別(Superclass)的函 數(shù)可以主動(dòng)呼叫子類(lèi)別(Subclass) 之函數(shù),,這就是 最傳統(tǒng)的 IoC 機(jī)制,稱(chēng)為「繼承體 系 IoC」。后 來(lái),,人們常 將許多相關(guān)的父 類(lèi)別 聚集起 來(lái)成為框架,,逐漸地,延伸為:應(yīng)用框架主動(dòng)呼叫 應(yīng)用程序之 情形,,就稱(chēng) 為 IoC ,。 或 者 說(shuō) : 會(huì) 主 動(dòng) 呼 叫 應(yīng) 用 程 序 之 框 架 , 就 稱(chēng) 為 IoC 框 架 ,, 例 如 Android,、Spring 等等。 輸入輸出捕捉(input output catch) |
|