国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

案例解析依賴注入和控制反轉

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

掃碼添加小助手

加入工程師交流群

什么是依賴注入

依賴注入(Dependency Injection),是這樣一個過程:某客戶類只依賴于服務類的一個接口,而不依賴于具體服務類,所以客戶類只定義一個注入點。在程序運行過程中,客戶類不直接實例化具體服務類實例,而是客戶類的運行上下文環境或專門組件負責實例化服務類,然后將其注入到客戶類中,保證客戶類的正常運行。

什么是控制反轉

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

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

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

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

一個例子理解控制反轉

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

//開汽車

汽車 cat=new 汽車();

cat.Stop();

//開火車省略。。

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

控制反轉

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

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

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

上圖的設計雖然解決了不用New具體那個對象的問題,但是新的問題也隨之而來:駕駛者到底使用哪個實現類?大家都知道接口是不能直接實例化的,能夠實例化的只有接口的具體的實現類。OK,為了解決這個問題我們繼續演變

上圖我們使用工廠模式,這時候的關系是駕駛者依賴與工廠類,由工廠類具體去創建具體的實現類。根據上圖我們再看如果我們實現開飛船,那么它們之間的關系會發生什么樣的變化(上圖三個交通工具和接口的關系標識錯了,應該是實現)

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

最后來總結一下到底什么是控制反轉,我的答案已經在文章開頭給出了,下面給出維基百科的答案:

控制反轉(Inversion of Control,縮寫為IoC),是面向對象編程中的一種設計原則,可以用來減低計算機代碼之間的耦合度。其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI),還有一種方式叫“依賴查找”(Dependency Lookup)。通過控制反轉,對象在被創建的時候,由一個調控系統內所有對象的外界實體,將其所依賴的對象的引用傳遞給它。也可以說,依賴被注入到對象中。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 面向對象
    +關注

    關注

    0

    文章

    64

    瀏覽量

    10251
  • 控制反轉
    +關注

    關注

    0

    文章

    1

    瀏覽量

    974
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    DR1M90 開源 IgH EtherCAT 主站案例:伺服電機正反轉實時控制方案

    本文為創龍科技DR1M90 評估板的 IgH EtherCAT 主站應用案例,基于 Linux-RT 內核與開源協議棧,實現伺服電機正反轉實時控制。案例通訊周期 1ms,支持電機 0-10000(正
    的頭像 發表于 01-04 15:40 ?1791次閱讀
    DR1M90 開源 IgH EtherCAT 主站案例:伺服電機正<b class='flag-5'>反轉</b>實時<b class='flag-5'>控制</b>方案

    經典 PLC 程序(2) - 正反轉

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

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

    運行,因此成功的代碼注入攻擊可以完全控制機器以及竊取數據,導致設備發生故障,將其作為其僵尸網絡成員或使其永久無法使用。 代碼注入漏洞的關鍵方面是: 該程序從輸入通道讀取數據 該程序將數據視為代碼并對其
    發表于 12-22 12:53

    C語言位域反轉的應用

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

    熱載流子注入效應深度解析

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

    求助,FT8161N無法控制反轉

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

    自動化生產線如何依賴驅動芯片?關鍵技術解析

    解析傳送帶、泵類設備對電機控制的高精度需求,揭示華芯邦芯片在工業自動化中的穩定表現。
    的頭像 發表于 05-29 17:56 ?653次閱讀

    注入增強型IGBT學習筆記

    為了協調IGBT通態特性與關斷特性及短路特性之間的矛盾,提高器件的綜合性能和可靠性,在IGBT中引入了一種電子注入增強效應(Injection Enhancement Effect,IE),既可
    的頭像 發表于 05-21 14:15 ?1609次閱讀
    <b class='flag-5'>注入</b>增強型IGBT學習筆記

    芯片離子注入后退火會引入的工藝問題

    本文簡單介紹了芯片離子注入后退火會引入的工藝問題:射程末端(EOR)缺陷、硼離子注入退火問題和磷離子注入退火問題。
    的頭像 發表于 04-23 10:54 ?2001次閱讀
    芯片離子<b class='flag-5'>注入</b>后退火會引入的工藝問題

    基于51/32單片機按鍵控制步進電機正反轉,A4988驅動

    基于51/32單片機按鍵控制步進電機正反轉,A4988驅動
    發表于 04-14 15:05 ?7次下載

    DeepSeek與存儲芯片為AI眼鏡注入新動能

    在人工智能技術飛速發展的2025年,AI眼鏡正從科幻概念走向現實生活。而這一進程中,國產大模型DeepSeek與存儲芯片技術的協同創新,正在為智能眼鏡的智能化、輕量化與實用化注入新動能。本文將從技術突破、產業鏈聯動與未來趨勢三個維度,解析這三者的深度關聯。
    的頭像 發表于 04-14 09:44 ?1447次閱讀

    ATV310A變頻器如何低電平觸發反轉

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

    如何控制三菱FR D720S 正反轉

    PU方式可以控制電機的正反轉么?
    發表于 04-06 20:28

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

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

    BLDC基于脈沖注入法的無刷直流電機轉子位置

    本文提出了一種采用脈沖注入來檢測無刷直流電機在靜止狀態時轉子位置的方法。基 于方法依次向定子繞組注入一系列的脈沖,通過脈沖電流的變化對轉子位置進行估算。實驗 結果表明:該方法不但具有較高的位置檢測準確性,同時對電機的參數依賴性低
    發表于 03-14 16:24