在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

西西 ? 來源:博客園 ? 作者: 大壯他哥 ? 2020-10-30 15:53 ? 次閱讀

什么是依賴注入

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

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

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

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

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

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

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

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

//開汽車

汽車 cat=new 汽車();

cat.Stop();

//開火車省略。。

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

控制反轉(zhuǎn)

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

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

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

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

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

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

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

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

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

    評(píng)論

    相關(guān)推薦

    PLC控制電機(jī)正反轉(zhuǎn)的物聯(lián)網(wǎng)解決方案

    機(jī)床工作臺(tái)的前進(jìn)與后退、機(jī)床主軸的正轉(zhuǎn)與反轉(zhuǎn)、升降機(jī)的上升與下降等。為了滿足這些要求,PLC控制電動(dòng)機(jī)必須能夠?qū)崿F(xiàn)正反轉(zhuǎn)。 為實(shí)現(xiàn)對(duì)這類自動(dòng)化設(shè)備的遠(yuǎn)程監(jiān)控,數(shù)之能提供高效可靠的物聯(lián)網(wǎng)解決方案。通過將數(shù)之能數(shù)據(jù)中臺(tái)接入控
    的頭像 發(fā)表于 11-19 15:53 ?294次閱讀
    PLC<b class='flag-5'>控制</b>電機(jī)正<b class='flag-5'>反轉(zhuǎn)</b>的物聯(lián)網(wǎng)解決方案

    什么是電機(jī)正反轉(zhuǎn)?電機(jī)正反轉(zhuǎn)主要應(yīng)用在哪些方面?

    能力。 電機(jī)正反轉(zhuǎn)的基本原理 電機(jī)正反轉(zhuǎn)的實(shí)現(xiàn)主要依賴于電機(jī)的控制方式。在交流電機(jī)中,通過改變電源的相序或使用變頻器改變電源的頻率和相位,可以實(shí)現(xiàn)電機(jī)的正
    的頭像 發(fā)表于 10-24 13:56 ?2901次閱讀

    drv8412是怎么控制電機(jī)正反轉(zhuǎn)的?

    請(qǐng)問drv8412是怎么控制電機(jī)的正反轉(zhuǎn),謝謝
    發(fā)表于 09-20 07:13

    無刷電機(jī)正反轉(zhuǎn)由什么控制

    無刷電機(jī)(Brushless DC Motor, BLDC)是一種沒有電刷的電機(jī),它通過電子換向器來控制電流的流向,從而實(shí)現(xiàn)電機(jī)的轉(zhuǎn)動(dòng)。無刷電機(jī)的正反轉(zhuǎn)控制是其應(yīng)用中的一個(gè)重要方面,涉及到電機(jī)的驅(qū)動(dòng)
    的頭像 發(fā)表于 09-03 14:14 ?964次閱讀

    如何將行程開關(guān)接入正反轉(zhuǎn)控制電路

    行程開關(guān)是一種常見的限位開關(guān),用于控制機(jī)械設(shè)備的行程。在正反轉(zhuǎn)控制電路中,行程開關(guān)可以用于實(shí)現(xiàn)自動(dòng)控制,當(dāng)設(shè)備到達(dá)預(yù)定位置時(shí),自動(dòng)切換到反向運(yùn)動(dòng)。以下是將行程開關(guān)接入正
    的頭像 發(fā)表于 08-26 16:35 ?877次閱讀

    ESP32控制舵機(jī)的正反轉(zhuǎn)原理是什么

    舵機(jī)是一種將電信號(hào)轉(zhuǎn)換為機(jī)械運(yùn)動(dòng)的設(shè)備,廣泛應(yīng)用于機(jī)器人、無人機(jī)、汽車等領(lǐng)域。ESP32是一款功能強(qiáng)大的微控制器,具有豐富的外設(shè)接口和高性能的處理能力,可以方便地控制舵機(jī)實(shí)現(xiàn)正反轉(zhuǎn)等動(dòng)作。本文將介紹
    的頭像 發(fā)表于 08-20 09:13 ?1352次閱讀

    變頻器控制電機(jī)的正反轉(zhuǎn)控制方式有哪些?

    變頻器是一種廣泛應(yīng)用于工業(yè)領(lǐng)域的電力調(diào)整設(shè)備,它可以通過改變電源的頻率來實(shí)現(xiàn)電機(jī)的速度控制。在許多生產(chǎn)過程中,電機(jī)的正反轉(zhuǎn)控制是非常重要的,變頻器能夠通過不同的控制方式來實(shí)現(xiàn)這一功能。
    的頭像 發(fā)表于 08-14 17:04 ?1954次閱讀

    簡(jiǎn)單介紹plc如何控制電機(jī)正反轉(zhuǎn)

    PLC(可編程邏輯控制器)控制電機(jī)正反轉(zhuǎn)的過程可以通過以下步驟清晰地表示和歸納: 一、了解電機(jī)正反轉(zhuǎn)工作原理 電機(jī)正反轉(zhuǎn)是指電機(jī)能夠?qū)崿F(xiàn)順時(shí)
    的頭像 發(fā)表于 07-29 10:37 ?1138次閱讀

    兩相正反轉(zhuǎn)開關(guān)怎么接線方法

    兩相正反轉(zhuǎn)開關(guān)是一種常見的電氣設(shè)備,主要用于實(shí)現(xiàn)電動(dòng)機(jī)的正反轉(zhuǎn)控制。在實(shí)際應(yīng)用中,正確接線是保證設(shè)備正常運(yùn)行的關(guān)鍵。本文將介紹兩相正反轉(zhuǎn)開關(guān)的接線方法,包括原理、步驟和注意事項(xiàng)。 一、
    的頭像 發(fā)表于 07-19 10:48 ?4650次閱讀

    v20變頻器控制電機(jī)反轉(zhuǎn)怎么調(diào)

    以下是一些關(guān)于V20變頻器控制電機(jī)反轉(zhuǎn)的基本步驟和注意事項(xiàng)。 確認(rèn)電機(jī)和變頻器的型號(hào)和規(guī)格是否匹配。 確保電機(jī)和變頻器的接線正確,包括電源線、控制線和電機(jī)線。 檢查變頻器的設(shè)置,確保其工作在正確
    的頭像 發(fā)表于 06-18 09:46 ?2685次閱讀

    PLC控制電動(dòng)機(jī)正反轉(zhuǎn)電路的工作原理

    在工業(yè)自動(dòng)化控制中,電動(dòng)機(jī)作為動(dòng)力源,其正反轉(zhuǎn)控制是常見的控制需求。傳統(tǒng)的電動(dòng)機(jī)正反轉(zhuǎn)控制主要
    的頭像 發(fā)表于 06-17 09:37 ?2337次閱讀

    PLC如何判斷編碼器正反轉(zhuǎn)

    在工業(yè)自動(dòng)化控制系統(tǒng)中,編碼器作為重要的位置反饋元件,其輸出的信號(hào)能夠準(zhǔn)確地反映被控對(duì)象的旋轉(zhuǎn)位置或角度。對(duì)于PLC(可編程邏輯控制器)來說,判斷編碼器的正反轉(zhuǎn)是實(shí)現(xiàn)精確控制的基礎(chǔ)。本
    的頭像 發(fā)表于 06-17 09:31 ?2588次閱讀

    步進(jìn)電機(jī)的正反轉(zhuǎn)實(shí)現(xiàn)方法

    步進(jìn)電機(jī),作為一種將電脈沖信號(hào)轉(zhuǎn)換為角位移或線位移的精密控制電機(jī),其正反轉(zhuǎn)的實(shí)現(xiàn)對(duì)于許多應(yīng)用至關(guān)重要。本文將深入探討步進(jìn)電機(jī)正反轉(zhuǎn)的實(shí)現(xiàn)方法,從基本的控制原理到具體的實(shí)現(xiàn)步驟,再到實(shí)際
    的頭像 發(fā)表于 06-14 09:58 ?3184次閱讀

    直流電機(jī)正反轉(zhuǎn)控制方式

    直流電機(jī),作為一種將直流電能轉(zhuǎn)化為機(jī)械能的電動(dòng)機(jī),廣泛應(yīng)用于各種工業(yè)和民用領(lǐng)域。在實(shí)際應(yīng)用中,經(jīng)常需要實(shí)現(xiàn)直流電機(jī)的正反轉(zhuǎn),以滿足不同的工作需求。本文將詳細(xì)介紹直流電機(jī)正反轉(zhuǎn)的實(shí)現(xiàn)方法,包括基本原理、控制方式和具體應(yīng)用案例,以期
    的頭像 發(fā)表于 06-04 17:20 ?5499次閱讀

    什么是離子注入?離子注入的應(yīng)用介紹

    離子注入是將高能離子注入半導(dǎo)體襯底的晶格中來改變襯底材料的電學(xué)性能的摻雜工藝。通過注入能量、角度和劑量即可控制摻雜濃度和深度,相較于傳統(tǒng)的擴(kuò)散工藝更為精確。
    的頭像 發(fā)表于 02-21 10:23 ?5446次閱讀
    什么是離子<b class='flag-5'>注入</b>?離子<b class='flag-5'>注入</b>的應(yīng)用介紹
    主站蜘蛛池模板: 精品国产麻豆免费人成网站 | 久久观看午夜精品 | 天天干夜夜艹 | 天堂在线观看免费视频 | 亚洲欧美视频一区二区 | 亚洲国产精品综合久久2007 | 91在线免费看| 欧美一级视频高清片 | 97午夜| 热re99久久国产精品 | 丁香婷婷激情综合 | 欧美三级一区二区三区 | 在线免费观看一区二区三区 | 在线成人精品国产区免费 | xxxx.欧美| 男女www视频在线看网站 | 天天看天天爽天天摸天天添 | 国模张文静啪啪私拍337p | 日本激情网 | 青娱乐啪啪 | 免费一级网站 | 亚洲一级香蕉视频 | 五月婷六月婷婷 | 免费番茄社区性色大片 | 国产在线操 | 在线成人亚洲 | 能看的黄色网址 | 免费看黄色片的软件 | 婷婷综合影院 | 国产亚洲欧美一区 | 美女被草视频在线观看 | 日本一区视频在线播放 | 亚洲第一在线播放 | 一级片免费观看视频 | 国产三级中文字幕 | 黄色三级视频网站 | 夜夜网站 | 国产午夜精品久久理论片小说 | 在线观看视频一区 | 午夜欧美精品久久久久久久久 | www成年人视频 |