日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

控制反转(IoC) ? 工厂模式?

發(fā)布時間:2025/6/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 控制反转(IoC) ? 工厂模式? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ?不知道大家還記不記得當(dāng)年程杰的《大話設(shè)計(jì)模式》了,最近一直想搞明白控制反轉(zhuǎn)到底是怎么回事,剛剛覺得高大上了一點(diǎn),然后再進(jìn)一步去學(xué)習(xí)去對比的時候才發(fā)現(xiàn),以前早就接觸過這類的思想,設(shè)計(jì)原則的依賴倒轉(zhuǎn)和設(shè)計(jì)模式的工廠方法都很好的體現(xiàn)了這種思想,迫不及待的想要跟大家分享一下啦!

?

、依賴倒轉(zhuǎn)原則


A.高層模塊不應(yīng)該依賴低層模塊。兩個都應(yīng)該依賴于抽象。

B.抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。說白了就是,要針對接口編程,不要對實(shí)現(xiàn)編程。

????????在控制反轉(zhuǎn)的原理中,我們了解到,我們將對象的實(shí)例化放到了容器中,在產(chǎn)品實(shí)現(xiàn)的時候,我們直接調(diào)用接口,即容器將其所依賴的對象的引用傳遞到產(chǎn)品代碼中。IoC管理對象間的依賴關(guān)系,產(chǎn)品代碼只需要針對接口編程,而不再依賴于具體實(shí)現(xiàn)。與依賴倒轉(zhuǎn)原則如出一轍。

?

? ? ? ? ? ? ? ? ? ? ? ? ? ?

、工廠方法模式


????????定義一個用于創(chuàng)建對象的接口,讓子類決定實(shí)例化哪一個類。工廠方法使一個類的實(shí)例化延遲到其子類。

工廠方法遵循開放-封閉原則,并且保持了封裝對象創(chuàng)建過程的優(yōu)點(diǎn)。

????????我們可以把IoC模式看做是工廠模式的升華,把IoC看做是一個大工廠,只不過這個大工廠里要生成的對象都是在XML文件中給出定義的,然后利用Java的“反射”編程,根據(jù)XML中給出的類名生成相應(yīng)的對象。從實(shí)現(xiàn)來看,IoC是把以前在工廠方法里寫死的對象生成代碼,改變?yōu)橛蒟ML文件來定義,也就是把工廠和對象生成這兩者獨(dú)立分隔開來,目的就是提高靈活性和可維護(hù)性。

?

? ? ? ? ? ? ? ? ? ?

?

、反射


????????工廠方法也有缺點(diǎn),就是每加一個產(chǎn)品,就需要加一個產(chǎn)品工廠的類,增加了額外的開發(fā)量。不知道大家還記不記得在書里,寫工廠方法的那一章,在最后一段話中,給大家留下了一個伏筆——反射。

????????在后面講到抽象工廠的時候,就提到了依賴注入的名詞。就拿抽象工廠來說,如果我們需要新增一個數(shù)據(jù)庫類型,就需要在代碼中添加一條分支條件,破壞了開閉原則,這個時候依賴注入本身是沒有能力解決這個問題的,但是如果我們利用語言支持反射機(jī)制,利用反射配置數(shù)據(jù)源,就可以避免分支判斷的問題。

????????讓我們想想,反射做了什么工作,我們工程一開始的難點(diǎn)出在對象最后都是需要new,實(shí)例化的,而我們只能實(shí)例化當(dāng)前已有的類,不能對未來會添加的新類做處理,所以一旦有新的類加入,我們就必須修改代碼。但是,如果我們有一種方法,不是通過new,而是通過類的名字來實(shí)例化對象,那么我只需要將類的名字作為配置項(xiàng),就可以實(shí)現(xiàn)不修改代碼的前提下加未來會出現(xiàn)的類。所以,我們可以毫不夸張的說,反射給了語言“預(yù)見未來”的能力,使得多態(tài)性和依賴注入的威力大增

?

四、結(jié)束語

?

? ? ? ? ??看了一大堆資料,把以前的設(shè)計(jì)模式也翻出來研究了一番,畫畫圖,思路更加的清晰IoC感覺就像”抽象工廠+反射+配置文件“,如圖,我們可以把AbstractFactory作為IoC容器,并且加入反射機(jī)制和配置文件,實(shí)現(xiàn)靈活配置類名。(解釋,配置文件取代ConcreFactory1ConcreFactory2,具體用哪個,靈活配置類名即可;反射用在AbstractFactory里,取代分支判斷,避免了后期擴(kuò)展修改代碼的弊病)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?

???????? OK,面向?qū)ο鬅o外乎那幾個原則,大道至簡的路,還很漫長,java的學(xué)習(xí),才剛剛開始,加油吧!

總結(jié)

以上是生活随笔為你收集整理的控制反转(IoC) ? 工厂模式?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。