IOC與DI在吃雞中的應(yīng)用

IOC:Inversion of Control策严,即“控制反轉(zhuǎn)”

DI:Dependency Injection西篓,即“依賴注入”

參考文檔:

? ? | 馬丁老爺子的解釋


原始吃雞流程

假如自己是個吃雞隊員祥山,要上線打仗赵哲,本來什么都沒有需频,所以就自己去尋找武器漓帅,彈藥,醫(yī)療箱炕泳,食物等纵诞,這些依賴品都需要我們自己來一一去尋找并和他們進(jìn)行組合,也就是所謂的我們只有依賴于這些對象喊崖,控制這些對象挣磨,和他們進(jìn)行組合之后才能達(dá)到我們吃雞的目的雇逞,于是N多個吃雞隊員都要去尋找自己的依賴對象來達(dá)到不同的目的荤懂。


改良后的吃雞流程

后面陸戰(zhàn)隊的領(lǐng)導(dǎo)成立了后勤部門,部門名字為IOC容器塘砸,后勤部門說了节仿,我這邊什么都有,你們不要自己去找資源了掉蔬,想要啥問我要廊宪,于是吃雞隊員就按照自己不同的依賴需求直接伸手去拿,并且拿來即用女轿,再也不用費勁兒去找了箭启。


改良前后對比分析

改良之后,吃雞隊員動手拿資源的過程蛉迹,并不是自己主動去拿傅寡,而是后勤部門(IOC容器)會在你執(zhí)行作戰(zhàn)任務(wù)的時候(程序運行時)動態(tài)的識別你需要什么并送到你手上(依賴注入-DI),關(guān)于依賴注入是有兩種方式的北救,一種是你想要什么就問后勤部門要什么荐操,另外一個就是被動的讓后勤部門給你發(fā)放,也就是所謂的主動注入和被動注入珍策。

那么托启,現(xiàn)在對象獲取的控制權(quán)不在你的手上,而是在后勤部門手上(IOC容器)攘宙,也就是所謂的控制反轉(zhuǎn)(IOC)屯耸,但是后勤部門本身也有發(fā)錯裝備的時候拐迁,那么吃雞隊員就會打call給后勤部門投訴(程序啟動的時候報錯)。



為什么要成立后勤部門

之前每個吃雞隊員要去尋找裝備肩民,費時費力唠亚,并且資源浪費。

? ? 費時費力: 每次都要去自己找資源持痰,可能會引起資源沖突灶搜,比如張三和李四花了一個小時都去找資源發(fā)現(xiàn)了同一個沙漠之鷹,但是只能一個人拿去用工窍。

? ? 資源浪費:張三手上有個AK47割卖,但是一直不用,李四手上只有一個木棍患雏,AK47找了一天都沒找到鹏溯,后來被KO了~??。


成立后勤部門后統(tǒng)一調(diào)配資源淹仑,省時省力丙挽,實現(xiàn)了資源優(yōu)化配置。

? ? 省時省力: 不用跑腿匀借,不用去撿裝備颜阐,在合適的時間后勤部會給你合適的裝備。

? ? ? ? 關(guān)于“合適的時間”:默認(rèn)情況下吓肋,在程序編譯時凳怨,準(zhǔn)確的說是在SpringBoot啟動時,IOC容器會自動創(chuàng)建對象是鬼,并且注入到我們的代碼片段里肤舞;但是我們可以更改默認(rèn)機制,來延遲實例化:就是在使用方和被使用方都加上@Lazy注解均蜜。

? ? 資源優(yōu)化配置

????????張三手上有個AK47李剖,但是一直不用這種情況不存在了,因為只有張三使用的時候才會發(fā)給他囤耳,不用的時候就進(jìn)行回收(對象的創(chuàng)建篙顺,回收,分配紫皇,再利用)從而提高資源的復(fù)用率慰安。 一個對象創(chuàng)建/回收的典型例子就是@Conditional條件注解,比如AK47他的損壞程度達(dá)到了60%聪铺, 那么可以通過條件注解來決定當(dāng)損壞率達(dá)到60%的時候不讓AK47進(jìn)入后勤部門待發(fā)放倉庫中(IOC容器)化焕;另外也可以通過優(yōu)先級注解@Primary來決定,當(dāng)有AK47铃剔,AK48等等的時候撒桨,如果AK47這個Bean被打上了@Primary注解查刻,那么就會優(yōu)先被放置到IOC容器。注意凤类,這里的條件注解和優(yōu)先級注解是針對放入容器的穗泵,而不是容器注入,所以注解是使用在AK47這個被放入容器的Bean的位置谜疤。那么對于李四來說佃延,就不會拿到一個不能用的AK47了,而且可以根據(jù)優(yōu)先級設(shè)定來拿到相對更好用的武器裝備夷磕。

????=>在這里我們的關(guān)注點是AK47這個類履肃,當(dāng)你想換個裝備或者在某個前提條件下替換裝備時(當(dāng)某個類的需求發(fā)生變化的時候)我們可以分別通過@Primary和@Conditional來進(jìn)行對應(yīng)的處理。

? ? 當(dāng)張三想替換所有的裝備坐桩,槍尺棋,頭盔,鞋子绵跷,醫(yī)療箱膘螟,坦克,大炮碾局,飛機等等荆残,也就是涉及到大量的裝備的自動裝配問題,我們需要靈活的替換所有這些裝備擦俐,那就需要SPI的機制進(jìn)行處理脊阴。SPI全稱:Service Provider Interface握侧,基于Interface + 策略模式+ 配置文件蚯瞧, Interface和策略模式解決了張三/李四的槍的問題,但是沒有解決其他裝備的問題品擎,那么通過配置文件就可以靈活的進(jìn)行裝備的批量裝配問題(將配置批量導(dǎo)入到IOC容器以及注入的問題)埋合,關(guān)于這個問題請參考:自動裝配




最后祝大家吃雞愉快~



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市萄传,隨后出現(xiàn)的幾起案子甚颂,更是在濱河造成了極大的恐慌,老刑警劉巖秀菱,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件振诬,死亡現(xiàn)場離奇詭異,居然都是意外死亡衍菱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門辫呻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人祟昭,你說我怎么就攤上這事怖侦。” “怎么了恰力?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵踩萎,是天一觀的道長。 經(jīng)常有香客問我香府,道長码倦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任勿璃,我火速辦了婚禮补疑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘莲组。我一直安慰自己暖夭,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著裕菠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喻圃,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天斧拍,我揣著相機與錄音杖小,去河邊找鬼。 笑死予权,一個胖子當(dāng)著我的面吹牛扫腺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播攒至,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼躁劣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了志膀?” 一聲冷哼從身側(cè)響起鳖擒,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤败去,失蹤者是張志新(化名)和其女友劉穎烈拒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荆几,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡行拢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年诞吱,在試婚紗的時候發(fā)現(xiàn)自己被綠了竭缝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抬纸。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡耿戚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出膜蛔,到底是詐尸還是另有隱情,我是刑警寧澤墅茉,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布呜呐,位于F島的核電站,受9級特大地震影響战转,放射性物質(zhì)發(fā)生泄漏槐秧。R本人自食惡果不足惜忧设,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望膀懈。 院中可真熱鬧谨垃,春花似錦、人聲如沸胳赌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撼短。三九已至挺勿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間满钟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工夭织, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尊惰,地道東北人弄屡。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓鞋诗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親全庸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容