chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

什么是依賴注入

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

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

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

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

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

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

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

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

//開汽車

汽車 cat=new 汽車();

cat.Stop();

//開火車省略。。

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

控制反轉(zhuǎn)

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

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

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

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

上圖我們使用工廠模式,這時候的關(guān)系是駕駛者依賴與工廠類,由工廠類具體去創(chuàng)建具體的實(shí)現(xiàn)類。根據(jù)上圖我們再看如果我們實(shí)現(xiàn)開飛船,那么它們之間的關(guān)系會發(fā)生什么樣的變化(上圖三個交通工具和接口的關(guān)系標(biāo)識錯了,應(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,簡稱DI),還有一種方式叫“依賴查找”(Dependency Lookup)。通過控制反轉(zhuǎn),對象在被創(chuàng)建的時候,由一個調(diào)控系統(tǒng)內(nèi)所有對象的外界實(shí)體,將其所依賴的對象的引用傳遞給它。也可以說,依賴被注入到對象中。
編輯:hfy

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    基于51/32單片機(jī)按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn),A4988驅(qū)動

    基于51/32單片機(jī)按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn),A4988驅(qū)動
    發(fā)表于 04-14 15:05 ?6次下載

    ATV310A變頻器如何低電平觸發(fā)反轉(zhuǎn)?

    這一操作變得更加靈活和方便。 本文詳細(xì)介紹了ATV310A變頻器如何設(shè)置低電平觸發(fā)反轉(zhuǎn)的方法,包括反轉(zhuǎn)控制的基本原理、設(shè)置步驟、注意事項(xiàng)與故障排除以及實(shí)際應(yīng)用案例。讓讀者可以深入了解ATV310A變頻器的
    的頭像 發(fā)表于 04-14 07:38 ?1147次閱讀

    如何控制三菱FR D720S 正反轉(zhuǎn)

    PU方式可以控制電機(jī)的正反轉(zhuǎn)么?
    發(fā)表于 04-06 20:28

    可控硅的控制奧秘:依賴直流還是交流?

    可控硅的控制奧秘:依賴直流還是交流?可控硅,也稱為硅控整流器(SiliconControlledRectifier,簡稱SCR),是一種重要的半導(dǎo)體器件,廣泛應(yīng)用于電力電子、電機(jī)控制、照明調(diào)節(jié)等領(lǐng)域
    的頭像 發(fā)表于 04-03 11:59 ?1441次閱讀
    可控硅的<b class='flag-5'>控制</b>奧秘:<b class='flag-5'>依賴</b>直流還是交流?

    BLDC基于脈沖注入法的無刷直流電機(jī)轉(zhuǎn)子位置

    本文提出了一種采用脈沖注入來檢測無刷直流電機(jī)在靜止?fàn)顟B(tài)時轉(zhuǎn)子位置的方法?;?于方法依次向定子繞組注入一系列的脈沖,通過脈沖電流的變化對轉(zhuǎn)子位置進(jìn)行估算。實(shí)驗(yàn) 結(jié)果表明:該方法不但具有較高的位置檢測準(zhǔn)確性,同時對電機(jī)的參數(shù)依賴性低
    發(fā)表于 03-14 16:24

    有刷電機(jī)如何實(shí)現(xiàn)正反轉(zhuǎn)(可下載)

    一、有刷電機(jī)結(jié)構(gòu)介紹無刷直流永磁電動機(jī)廣泛地用于驅(qū)動和伺服系統(tǒng)中,在許多場合,不但要求電動機(jī)具 有良好地啟動和調(diào)節(jié)特性,而且要求電機(jī)能夠正反轉(zhuǎn)。本篇文章,我們著重來分析下有刷 永磁直流電動機(jī)地正反轉(zhuǎn)
    發(fā)表于 03-03 14:32 ?2次下載

    穩(wěn)定性建設(shè)之依賴設(shè)計(jì)

    作者:京東物流 馮志文 背景 隨著分布式微服務(wù)的發(fā)展,一個普通的應(yīng)用可能會依賴于許多其他服務(wù),這給系統(tǒng)的限流降級、優(yōu)化改造等操作帶來了困難。在沒有明確強(qiáng)弱依賴關(guān)系的情況下,我們很難有效地進(jìn)行這些操作
    的頭像 發(fā)表于 02-21 09:49 ?689次閱讀
    穩(wěn)定性建設(shè)之<b class='flag-5'>依賴</b>設(shè)計(jì)

    控制DLP2010鏡面反轉(zhuǎn),微鏡四周有白邊,請問這個現(xiàn)象是正常的嗎?

    DLP2010分辨率為854*480,按照這個分辨率控制鏡面反轉(zhuǎn),總是出現(xiàn)四周有白邊,也就四周一圈的微鏡不反轉(zhuǎn)。請問這個現(xiàn)象是正常的嗎?如果我想讓所有的微晶都反轉(zhuǎn),該如何做?謝謝
    發(fā)表于 02-19 06:27

    離子注入工藝中的重要參數(shù)和監(jiān)控手段

    本文簡單介紹了離子注入工藝中的重要參數(shù)和離子注入工藝的監(jiān)控手段。 在硅晶圓制造過程中,離子的分布狀況對器件性能起著決定性作用,而這一分布又與離子注入工藝的主要參數(shù)緊密相連。 離子注入
    的頭像 發(fā)表于 01-21 10:52 ?2831次閱讀
    離子<b class='flag-5'>注入</b>工藝中的重要參數(shù)和監(jiān)控手段

    可控硅的控制奧秘:依賴直流還是交流?

    可控硅是一種重要的半導(dǎo)體器件,通過控制極的觸發(fā)信號實(shí)現(xiàn)對電流的控制。它可以在直流和交流電路中應(yīng)用,分別用于開關(guān)、調(diào)節(jié)、調(diào)光等功能。直流控制和交流控制的特點(diǎn)和應(yīng)用場景有所不同,但都
    的頭像 發(fā)表于 01-10 15:44 ?2988次閱讀
    可控硅的<b class='flag-5'>控制</b>奧秘:<b class='flag-5'>依賴</b>直流還是交流?

    字符串反轉(zhuǎn)的實(shí)現(xiàn)方式

    在編程中,字符串反轉(zhuǎn)是一個基礎(chǔ)而重要的操作,它涉及到將一個字符串中的字符順序顛倒過來。這個操作在多種編程語言中都有不同的實(shí)現(xiàn)方式,本文將探討幾種常見的字符串反轉(zhuǎn)方法。 1. 遞歸方法 遞歸是一種通過
    的頭像 發(fā)表于 01-07 15:27 ?1233次閱讀

    離子注入的目的及退火過程

    產(chǎn)生的晶格損傷,并激活摻雜劑離子,從而實(shí)現(xiàn)預(yù)期的電學(xué)特性。 1. 離子注入的目的 離子注入是現(xiàn)代半導(dǎo)體制造中不可或缺的工藝之一。通過這一步驟,可以精確控制摻雜劑的種類、濃度和分布,以創(chuàng)建半導(dǎo)體器件所需的P型和N型區(qū)
    的頭像 發(fā)表于 01-02 10:22 ?2279次閱讀

    對于低能注入(BR 2K),四點(diǎn)探針測量RS,為什么新針比老針的RS低?而高能注入RS不存在該情況呢

    對于低能注入(BR 2K),四點(diǎn)探針測量RS,為什么新針比老針的RS低?而高能注入RS不存在該情況呢
    發(fā)表于 12-20 23:05