色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    瀏覽量

    9994
  • 控制反轉
    +關注

    關注

    0

    文章

    1

    瀏覽量

    934
收藏 人收藏

    評論

    相關推薦

    什么是電機正反轉?電機正反轉主要應用在哪些方面?

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

    drv8412是怎么控制電機正反轉的?

    請問drv8412是怎么控制電機的正反轉,謝謝
    發表于 09-20 07:13

    無刷電機正反轉由什么控制

    無刷電機(Brushless DC Motor, BLDC)是一種沒有電刷的電機,它通過電子換向器來控制電流的流向,從而實現電機的轉動。無刷電機的正反轉控制是其應用中的一個重要方面,涉及到電機的驅動
    的頭像 發表于 09-03 14:14 ?781次閱讀

    如何將行程開關接入正反轉控制電路

    行程開關是一種常見的限位開關,用于控制機械設備的行程。在正反轉控制電路中,行程開關可以用于實現自動控制,當設備到達預定位置時,自動切換到反向運動。以下是將行程開關接入正
    的頭像 發表于 08-26 16:35 ?732次閱讀

    ESP32控制舵機的正反轉原理是什么

    舵機是一種將電信號轉換為機械運動的設備,廣泛應用于機器人、無人機、汽車等領域。ESP32是一款功能強大的微控制器,具有豐富的外設接口和高性能的處理能力,可以方便地控制舵機實現正反轉等動作。本文將介紹
    的頭像 發表于 08-20 09:13 ?1179次閱讀

    變頻器控制電機的正反轉控制方式有哪些?

    變頻器是一種廣泛應用于工業領域的電力調整設備,它可以通過改變電源的頻率來實現電機的速度控制。在許多生產過程中,電機的正反轉控制是非常重要的,變頻器能夠通過不同的控制方式來實現這一功能。
    的頭像 發表于 08-14 17:04 ?1756次閱讀

    簡單介紹plc如何控制電機正反轉

    PLC(可編程邏輯控制器)控制電機正反轉的過程可以通過以下步驟清晰地表示和歸納: 一、了解電機正反轉工作原理 電機正反轉是指電機能夠實現順時
    的頭像 發表于 07-29 10:37 ?1031次閱讀

    兩相正反轉開關怎么接線方法

    兩相正反轉開關是一種常見的電氣設備,主要用于實現電動機的正反轉控制。在實際應用中,正確接線是保證設備正常運行的關鍵。本文將介紹兩相正反轉開關的接線方法,包括原理、步驟和注意事項。 一、
    的頭像 發表于 07-19 10:48 ?3836次閱讀

    v20變頻器控制電機反轉怎么調

    以下是一些關于V20變頻器控制電機反轉的基本步驟和注意事項。 確認電機和變頻器的型號和規格是否匹配。 確保電機和變頻器的接線正確,包括電源線、控制線和電機線。 檢查變頻器的設置,確保其工作在正確
    的頭像 發表于 06-18 09:46 ?2467次閱讀

    PLC控制電動機正反轉電路的工作原理

    在工業自動化控制中,電動機作為動力源,其正反轉控制是常見的控制需求。傳統的電動機正反轉控制主要
    的頭像 發表于 06-17 09:37 ?2145次閱讀

    步進電機的正反轉實現方法

    步進電機,作為一種將電脈沖信號轉換為角位移或線位移的精密控制電機,其正反轉的實現對于許多應用至關重要。本文將深入探討步進電機正反轉的實現方法,從基本的控制原理到具體的實現步驟,再到實際
    的頭像 發表于 06-14 09:58 ?2863次閱讀

    直流電機正反轉控制方式

    直流電機,作為一種將直流電能轉化為機械能的電動機,廣泛應用于各種工業和民用領域。在實際應用中,經常需要實現直流電機的正反轉,以滿足不同的工作需求。本文將詳細介紹直流電機正反轉的實現方法,包括基本原理、控制方式和具體應用案例,以期
    的頭像 發表于 06-04 17:20 ?4978次閱讀

    什么是離子注入?離子注入的應用介紹

    離子注入是將高能離子注入半導體襯底的晶格中來改變襯底材料的電學性能的摻雜工藝。通過注入能量、角度和劑量即可控制摻雜濃度和深度,相較于傳統的擴散工藝更為精確。
    的頭像 發表于 02-21 10:23 ?5192次閱讀
    什么是離子<b class='flag-5'>注入</b>?離子<b class='flag-5'>注入</b>的應用介紹

    詳細解析二相電機反轉的改變方法

    詳細解析二相電機反轉的改變方法? 二相電機反轉是指通過改變電機的工作方式和接線方式來改變電機的旋轉方向。以下是對二相電機反轉的改變方法的詳細解析
    的頭像 發表于 01-23 14:45 ?2781次閱讀

    一種擴展Spring控制反轉的絕妙方法

    類型等于JSON,我就用JSON解析器,那如果新加一個類型的解析器,是不是調用的客戶端還要修改呢?這顯然太耦合了,本文就介紹一種方法,服務定位模式Service Locator Pattern來解決,它幫助我們消除緊耦合實現及其依賴
    的頭像 發表于 01-10 09:41 ?483次閱讀
    主站蜘蛛池模板: 国产精品免费大片| 超碰国产人人做人人爽| 99视频在线观看免费| 极品少妇高潮啪啪AV无码吴梦梦| 四虎永久在线精品国产免费| 成人永久免费视频| 人妻插B视频一区二区三区| 99在线观看视频| 欧美日韩一区二区三区四区| 99视频免费播放| 奇米狠狠干| 成人免费小视频| 日本无码专区亚洲麻豆| 东北嫖妓对白粗口| 四虎国产精品永久一区高清| 国产色精品久久人妻无码看片| 亚洲国产精品无码2019| 嗨嗨快播电影| 樱桃BT在线观看| 免费毛片观看| 99久热这里精品免费| 日本亚洲中文字幕无码区| 国产成人在线视频观看| 亚洲h视频在线观看| 久久久久久久尹人综合网亚洲| 18禁黄无遮挡禁游戏在线下载| 欧美の无码国产の无码影院| 草柳最新地址| 小学生偷拍妈妈视频遭性教育| 精品久久久久久久国产潘金莲| 2019在秋霞理论| 日本男女动态图| 果冻传媒在线观看资源七夕| 在线亚洲色拍偷拍在线视频| 欧美成ee人免费视频| 攻把受做哭边走边肉楼梯PLAY| 亚洲国产成人爱AV在线播放丿 | 一抽一出BGM免费50分动漫| 久久se精品一区二区国产| 99精品观看| 午夜在线视频国产极品片|