我的書中的一段,貼出來。呵呵。大伙兒拍磚哦!by:張勇? IoC即Inversion of Control,控制反轉(zhuǎn)。它不是一種編程技術(shù),而是一種設(shè)計(jì)模式。利用它,可以促進(jìn)應(yīng)用程序組件或類之間的松散耦合。一般的情況下,我們需要自己創(chuàng)建對(duì)象的實(shí)例,比如在Computer類中創(chuàng)建一個(gè)打印機(jī)的實(shí)例:
?
?這樣看似很好的解決了上述問題。但是實(shí)際上電腦(Computer)和打印機(jī)(Printer)之間的耦合性仍然很高:打印機(jī)的代碼寫入了電腦中,我們不得不在使用之前先調(diào)SetPrinter方法為電腦“安裝”打印機(jī),但是電腦使用者僅僅想使用打印機(jī)而已,可是這里他卻不得不做安裝打印機(jī)的工作。
這種依賴關(guān)系在“分離關(guān)注”的思想下是無法忍耐的,于是產(chǎn)生了新的模式,即控制反轉(zhuǎn)( IoC )。使用這種方式,電腦 (Computer) 只是需要提供一個(gè)打印機(jī) (Printer) 的“屬性”和安裝打印機(jī)的“渠道”。如果需要(當(dāng)需要使用打印任務(wù)時(shí)), IoC 容器會(huì)在合適的時(shí)候自動(dòng)為電腦注入(安裝)打印機(jī)。這就好像我們請(qǐng)了個(gè)網(wǎng)管,我們要使用打印機(jī)的時(shí)候,可以直接告訴網(wǎng)管“我需要一個(gè)惠普打印機(jī) ”,然后網(wǎng)管就自動(dòng)的找到打印機(jī)并安裝好,我們就可以使用它了。這樣電腦使用者就可以完全不必關(guān)心打印機(jī)而只需使用它就行了。代碼如下:
??
???Spring?框架為我們提供了一個(gè)優(yōu)秀的IoC容器。我們只是需要在它的配置文件中指明我們需要那個(gè)類的實(shí)例,這個(gè)類在那里,Spring的IoC容器會(huì)在合適的時(shí)候自動(dòng)的為我們注入這個(gè)類的實(shí)例。從而我們可以完全不必考慮對(duì)象的創(chuàng)建工作,還可以實(shí)現(xiàn)應(yīng)用程序各個(gè)組件的“即插即用”,而不需要修改源代碼。
?? Spring提供呢多種配置文件的形式,但是推薦使用xml配置文件來驅(qū)動(dòng)應(yīng)用,盡管它也支持.properties文件和數(shù)據(jù)庫的配置形式。
殘夢(mèng)追月
四川農(nóng)業(yè)大學(xué)
專注于J2EE、J2ME開發(fā),關(guān)注Spring、hibernate、Android等開源軟件……
E-mail:dashoumail@163.com