日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

案例解析依賴注入和控制反轉(zhuǎn)

西西 ? 來(lái)源:博客園 ? 作者: 大壯他哥 ? 2020-10-30 15:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

什么是依賴注入

依賴注入(Dependency Injection),是這樣一個(gè)過(guò)程:某客戶類只依賴于服務(wù)類的一個(gè)接口,而不依賴于具體服務(wù)類,所以客戶類只定義一個(gè)注入點(diǎn)。在程序運(yùn)行過(guò)程中,客戶類不直接實(shí)例化具體服務(wù)類實(shí)例,而是客戶類的運(yùn)行上下文環(huán)境或?qū)iT(mén)組件負(fù)責(zé)實(shí)例化服務(wù)類,然后將其注入到客戶類中,保證客戶類的正常運(yùn)行。

什么是控制反轉(zhuǎn)

在解釋什么是控制反轉(zhuǎn)的之前我們先引入上一篇博文一個(gè)博友在評(píng)論中提的問(wèn)題:依賴注入和控制反轉(zhuǎn)不是一回事嗎?

在我看來(lái),控制反轉(zhuǎn)這種思想最終的實(shí)現(xiàn)要依賴與依賴注入這種實(shí)現(xiàn)方式??刂品崔D(zhuǎn)只是把高低層的關(guān)系發(fā)生變化,以前底層模塊在實(shí)現(xiàn)功能的時(shí)候可能會(huì)依賴于高層模塊,通過(guò)控制反轉(zhuǎn)可以讓底層模塊依賴于一個(gè)接口,如果這個(gè)時(shí)候高層模塊要使用底層模塊的話就必須

實(shí)現(xiàn)這個(gè)接口,然后通過(guò)依賴注入的方式把高層模塊的實(shí)現(xiàn)類注冊(cè)到底層模塊中使用。

有可能上面的解釋大家比較懵,下面我會(huì)通過(guò)舉例來(lái)進(jìn)一步介紹控制反轉(zhuǎn)這種設(shè)計(jì)模式。

一個(gè)例子理解控制反轉(zhuǎn)

從上圖可以看出駕駛者依賴“汽車“和“火車”這兩個(gè)類,如果駕駛員需要開(kāi)汽車話的就需要實(shí)例化一個(gè)汽車類,需要開(kāi)火車的話則需要實(shí)例化一個(gè)火車類

//開(kāi)汽車

汽車 cat=new 汽車();

cat.Stop();

//開(kāi)火車省略。。

這個(gè)時(shí)候如果說(shuō)我們需要開(kāi)飛機(jī)怎么辦?傳統(tǒng)做法則是新建一個(gè)飛機(jī)類,然后在駕駛者直接實(shí)例化飛機(jī)類即可。

控制反轉(zhuǎn)

我們暫把上圖的框架成為“自動(dòng)駕駛系統(tǒng)”,現(xiàn)在“自動(dòng)駕駛系統(tǒng)”已經(jīng)擁有了自動(dòng)開(kāi)汽車、開(kāi)飛機(jī)、開(kāi)火車的功能了,你覺(jué)得已經(jīng)很強(qiáng)大了,于是把這套系統(tǒng)賣(mài)給了某個(gè)公司,但是這家公司的業(yè)務(wù)不僅限于前三種交通工具,現(xiàn)在這家公司要實(shí)現(xiàn)駕駛者可以駕駛飛船,如下圖所示

大家可以看到如果我們的“自動(dòng)駕駛系統(tǒng)”要實(shí)現(xiàn)可以駕駛飛船的話,就需要駕駛者創(chuàng)建“飛船”的對(duì)象,這個(gè)時(shí)候我們的框架還是依賴于外部(因?yàn)轱w船類在客戶那邊)。這個(gè)就是我們常說(shuō)的底層模塊依賴于高級(jí)模塊。這種依賴肯定是不行的,隨著客戶的變化就要改動(dòng)我們的框架,這種做法肯定不行,我們繼續(xù)演變。

現(xiàn)在我們的駕駛者并不直接依賴于某個(gè)具體實(shí)現(xiàn)類,而且依賴于接口,但是這個(gè)時(shí)候上圖就暴露了一個(gè)問(wèn)題,希望大家先不要看下面的文字,大家可以先思考下上圖有什么問(wèn)題。(上圖三個(gè)交通工具和接口的關(guān)系標(biāo)識(shí)錯(cuò)了,應(yīng)該是實(shí)現(xiàn))

上圖的設(shè)計(jì)雖然解決了不用New具體那個(gè)對(duì)象的問(wèn)題,但是新的問(wèn)題也隨之而來(lái):駕駛者到底使用哪個(gè)實(shí)現(xiàn)類?大家都知道接口是不能直接實(shí)例化的,能夠?qū)嵗闹挥薪涌诘木唧w的實(shí)現(xiàn)類。OK,為了解決這個(gè)問(wèn)題我們繼續(xù)演變

上圖我們使用工廠模式,這時(shí)候的關(guān)系是駕駛者依賴與工廠類,由工廠類具體去創(chuàng)建具體的實(shí)現(xiàn)類。根據(jù)上圖我們?cè)倏慈绻覀儗?shí)現(xiàn)開(kāi)飛船,那么它們之間的關(guān)系會(huì)發(fā)生什么樣的變化(上圖三個(gè)交通工具和接口的關(guān)系標(biāo)識(shí)錯(cuò)了,應(yīng)該是實(shí)現(xiàn))

通過(guò)一系列演化,現(xiàn)在兩者之間的關(guān)系已經(jīng)徹底發(fā)生了改變,以前是底層模塊(框架)依賴于高層模塊,現(xiàn)在變成了高層模塊依賴于底層模塊,從上圖可以看出,無(wú)論你是要開(kāi)飛船還是開(kāi)火箭,只要你實(shí)現(xiàn)了“交通工具”接口,那么我就可以在工廠類里面給創(chuàng)建出來(lái)。這樣一來(lái)不僅增加了我們系統(tǒng)的可擴(kuò)展性,也提高了我們系統(tǒng)的整體穩(wěn)健型。

最后來(lái)總結(jié)一下到底什么是控制反轉(zhuǎn),我的答案已經(jīng)在文章開(kāi)頭給出了,下面給出維基百科的答案:

控制反轉(zhuǎn)(Inversion of Control,縮寫(xiě)為IoC),是面向?qū)ο?a target="_blank">編程中的一種設(shè)計(jì)原則,可以用來(lái)減低計(jì)算機(jī)代碼之間的耦合度。其中最常見(jiàn)的方式叫做依賴注入(Dependency Injection,簡(jiǎn)稱DI),還有一種方式叫“依賴查找”(Dependency Lookup)。通過(guò)控制反轉(zhuǎn),對(duì)象在被創(chuàng)建的時(shí)候,由一個(gè)調(diào)控系統(tǒng)內(nèi)所有對(duì)象的外界實(shí)體,將其所依賴的對(duì)象的引用傳遞給它。也可以說(shuō),依賴被注入到對(duì)象中。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    注入變壓器入門(mén)(二):6大應(yīng)用場(chǎng)景

    注入變壓器憑借其獨(dú)特的電氣特性,在多個(gè)領(lǐng)域發(fā)揮著重要作用,以下是其主要應(yīng)用場(chǎng)景:1、電源環(huán)路穩(wěn)定性分析注入變壓器被廣泛應(yīng)用于開(kāi)關(guān)電源和DC-DC轉(zhuǎn)換器的環(huán)路穩(wěn)定性分析中。通過(guò)向電源控制回路注入
    的頭像 發(fā)表于 04-10 17:22 ?747次閱讀
    <b class='flag-5'>注入</b>變壓器入門(mén)(二):6大應(yīng)用場(chǎng)景

    步進(jìn)電機(jī)控制方案中驅(qū)動(dòng)板的核心作用與技術(shù)解析

    步進(jìn)電機(jī)作為開(kāi)環(huán)運(yùn)動(dòng)控制的核心執(zhí)行元件,其控制精度、運(yùn)行穩(wěn)定性、負(fù)載能力與噪聲表現(xiàn),完全依賴驅(qū)動(dòng)板的性能支撐。驅(qū)動(dòng)板是步進(jìn)電機(jī)控制方案中的 “功率中樞與
    發(fā)表于 04-10 15:34 ?327次閱讀

    注入變壓器入門(mén):從定義到關(guān)鍵技術(shù)參數(shù)解析

    一、定義與工作原理注入變壓器(InjectionTransformer),也稱注入器或信號(hào)注入器,本質(zhì)上是一種特殊設(shè)計(jì)的、用于信號(hào)注入的隔離變壓器,主要用于將網(wǎng)絡(luò)分析儀、示波器、頻響分
    的頭像 發(fā)表于 03-27 17:22 ?609次閱讀
    <b class='flag-5'>注入</b>變壓器入門(mén):從定義到關(guān)鍵技術(shù)參數(shù)<b class='flag-5'>解析</b>

    DR1M90 開(kāi)源 IgH EtherCAT 主站案例:伺服電機(jī)正反轉(zhuǎn)實(shí)時(shí)控制方案

    本文為創(chuàng)龍科技DR1M90 評(píng)估板的 IgH EtherCAT 主站應(yīng)用案例,基于 Linux-RT 內(nèi)核與開(kāi)源協(xié)議棧,實(shí)現(xiàn)伺服電機(jī)正反轉(zhuǎn)實(shí)時(shí)控制。案例通訊周期 1ms,支持電機(jī) 0-10000(正
    的頭像 發(fā)表于 01-04 15:40 ?3295次閱讀
    DR1M90 開(kāi)源 IgH EtherCAT 主站案例:伺服電機(jī)正<b class='flag-5'>反轉(zhuǎn)</b>實(shí)時(shí)<b class='flag-5'>控制</b>方案

    經(jīng)典 PLC 程序(2) - 正反轉(zhuǎn)

    PLC控制電機(jī)正反轉(zhuǎn)是工業(yè)控制中的典型應(yīng)用,核心邏輯是通過(guò)接觸器(或繼電器繼電器)控制電機(jī)的相序,同時(shí)需要加入互鎖和自鎖保護(hù),防止接觸器沖突或誤動(dòng)作。
    的頭像 發(fā)表于 12-24 11:41 ?962次閱讀
    經(jīng)典 PLC 程序(2) - 正<b class='flag-5'>反轉(zhuǎn)</b>

    分析嵌入式軟件代碼的漏洞-代碼注入

    運(yùn)行,因此成功的代碼注入攻擊可以完全控制機(jī)器以及竊取數(shù)據(jù),導(dǎo)致設(shè)備發(fā)生故障,將其作為其僵尸網(wǎng)絡(luò)成員或使其永久無(wú)法使用。 代碼注入漏洞的關(guān)鍵方面是: 該程序從輸入通道讀取數(shù)據(jù) 該程序?qū)?shù)據(jù)視為代碼并對(duì)其
    發(fā)表于 12-22 12:53

    C語(yǔ)言位域反轉(zhuǎn)的應(yīng)用

    位域反轉(zhuǎn)(Bit Reversal) unsigned int reverse_bits(unsigned int num) { unsigned int numOfBits = sizeof
    發(fā)表于 12-12 06:42

    熱載流子注入效應(yīng)深度解析

    在半導(dǎo)體行業(yè)追求芯片性能與集成度的道路上,熱載流子注入效應(yīng)(HCI)如同隱形殺手,悄然侵蝕著芯片的可靠性與壽命。隨著集成電路尺寸邁入納米級(jí),這一問(wèn)題愈發(fā)凸顯,成為制約芯片技術(shù)發(fā)展的關(guān)鍵瓶頸。
    的頭像 發(fā)表于 12-03 16:41 ?1843次閱讀
    熱載流子<b class='flag-5'>注入</b>效應(yīng)深度<b class='flag-5'>解析</b>

    求助,F(xiàn)T8161N無(wú)法控制反轉(zhuǎn)

    FT8161N,3HALL ic+2Res FOC,無(wú)法通過(guò)引腳DIR控制電機(jī)正反轉(zhuǎn);切換上位機(jī)的TestDIR選項(xiàng),電機(jī)依然只能一個(gè)方向轉(zhuǎn);
    發(fā)表于 11-18 10:17

    離子注入工藝中的常見(jiàn)問(wèn)題及解決方案

    在集成電路制造的離子注入工藝中,完成離子注入與退火處理后,需對(duì)注入結(jié)果進(jìn)行嚴(yán)格的質(zhì)量檢查,以確保摻雜效果符合器件設(shè)計(jì)要求。當(dāng)前主流的質(zhì)量檢查方法主要有兩種:四探針?lè)ㄅc熱波法,兩種方法各有特點(diǎn),適用于不同的檢測(cè)場(chǎng)景。
    的頭像 發(fā)表于 11-17 15:33 ?1633次閱讀
    離子<b class='flag-5'>注入</b>工藝中的常見(jiàn)問(wèn)題及解決方案

    離子注入技術(shù)的常見(jiàn)問(wèn)題

    離子注入單晶靶材時(shí),因靶體存在特定晶向,其對(duì)入射離子的阻滯作用不再如非晶材料般呈現(xiàn)各向同性。沿硅晶體部分晶向觀察,能發(fā)現(xiàn)晶格間存在特定通道(圖 1)。當(dāng)離子入射方向與靶材主晶軸平行時(shí),部分離子會(huì)直接
    的頭像 發(fā)表于 09-12 17:16 ?3127次閱讀
    離子<b class='flag-5'>注入</b>技術(shù)的常見(jiàn)問(wèn)題

    基于低頻旋轉(zhuǎn)電壓信號(hào)注入的PMSM初始定位

    針對(duì)增量式光電編碼器在永磁同步電機(jī)工作中存在的初始定位問(wèn)題,提出了使用低頻旋轉(zhuǎn)電樂(lè)信號(hào)注入法,通過(guò)檢測(cè)注入信號(hào)作用下電機(jī)轉(zhuǎn)子發(fā)生微小轉(zhuǎn)動(dòng)的時(shí)刻,確定轉(zhuǎn)子初始位置的方法。通過(guò)詳細(xì)分析永磁同步電機(jī)在低頻
    發(fā)表于 08-06 14:36

    博士學(xué)位論文-永磁同步電機(jī)脈振高頻信號(hào)注入無(wú)位置傳感器技術(shù)研究

    同步電機(jī)無(wú)位置傳感器控制技術(shù)的研究現(xiàn)狀進(jìn)行了綜述,研究表明,實(shí)現(xiàn)電機(jī)低速時(shí)轉(zhuǎn)子位置與轉(zhuǎn)速估計(jì)的難度較大。因此,本文緊緊圍繞表貼式永磁同步電機(jī)的零速和低速時(shí)無(wú)位置傳感器控制,采用脈振高頻信號(hào)注入法進(jìn)行了深入
    發(fā)表于 07-17 14:34

    自動(dòng)化生產(chǎn)線如何依賴驅(qū)動(dòng)芯片?關(guān)鍵技術(shù)解析

    解析傳送帶、泵類設(shè)備對(duì)電機(jī)控制的高精度需求,揭示華芯邦芯片在工業(yè)自動(dòng)化中的穩(wěn)定表現(xiàn)。
    的頭像 發(fā)表于 05-29 17:56 ?753次閱讀

    注入增強(qiáng)型IGBT學(xué)習(xí)筆記

    為了協(xié)調(diào)IGBT通態(tài)特性與關(guān)斷特性及短路特性之間的矛盾,提高器件的綜合性能和可靠性,在IGBT中引入了一種電子注入增強(qiáng)效應(yīng)(Injection Enhancement Effect,IE),既可
    的頭像 發(fā)表于 05-21 14:15 ?2086次閱讀
    <b class='flag-5'>注入</b>增強(qiáng)型IGBT學(xué)習(xí)筆記
    秭归县| 资源县| 西乌珠穆沁旗| 三亚市| 车致| 永清县| 泸西县| 金川县| 松桃| 泸定县| 江门市| 永昌县| 方正县| 佳木斯市| 贵州省| 锡林郭勒盟| 汉中市| 秭归县| 武冈市| 汉沽区| 额济纳旗| 盘山县| 浮山县| 康保县| 九龙城区| 清丰县| 什邡市| 乐安县| 松阳县| 长子县| 盐池县| 简阳市| 东乡县| 达尔| 英德市| 衡水市| 长泰县| 洞头县| 巫山县| 龙井市| 和平县|