主頁 > 知識庫 > asp.net中控制反轉(zhuǎn)的理解(文字+代碼)

asp.net中控制反轉(zhuǎn)的理解(文字+代碼)

熱門標(biāo)簽:電銷語音機(jī)器人型號參數(shù) 柳州電銷機(jī)器人公司 騰訊地圖標(biāo)注手機(jī) 浦發(fā)電話機(jī)器人提醒還款 太原400電話上門辦理 征途美甲店地圖標(biāo)注 昆明語音電銷機(jī)器人價格 400電話如何申請取消 百度地圖怎樣做地圖標(biāo)注

對IOC的解釋為:“Inversion of control is a common characteristic of frameworks, so saying that these lightweight containers are special because they use inversion of control is like saying my car is special because it has wheels.”

我想對這一概念執(zhí)行 一個個人的闡述,以方便我的理解??刂品崔D(zhuǎn),從字面意思來看, 就是控制權(quán)由被動變主動又變?yōu)楸粍樱虮粍幼冎鲃佑肿優(yōu)楸粍?。從這個角度來說,IOC就變得非常容易理解了。  
舉個例子:你的主管要求你做一件事情,這個時候就存在這么多個 流程 ,主管命令你做事情(這個時候主動權(quán)在主管,你是被動的)   
你接到命令做事情(這個時候主題是你,你是主動的,控制權(quán)在你手里) 你完成事情(這個時候主題依然是你,控制權(quán)在你手里)   
報告主管做完事情(主動權(quán)又叫交到主管手里了)

上面的整個流程 就完成了一次IOC,從上面可以看出,IOC的基本思想是控制權(quán)的轉(zhuǎn)換流程 。   

舉個代碼的例子:
假如有Class A,Class B,在A內(nèi)部會原始化一個B,調(diào)用B的一個要領(lǐng)

DoMethod public Class B

  {

  public void DoMethod()

  {

  /// do somthing;

  }

  }

  public Class A

  {

  public void Excute()

  {

  B b = new B();

  b.DoMethod();

  }

  }

假如在Main函數(shù)中如下執(zhí)行:   A a = new A();   a.Excute();  

從這兩行代碼來看,事實上也存在一個IOC的流程 ,a——>b——>a,理解的關(guān)鍵點就在在A的內(nèi)部調(diào)用Excute的時候, 要領(lǐng) b.DoMethod的執(zhí)行。  理解了IOC,我們再看一下DI, 從上面A調(diào)用B我們可以看出, 在原始化一個A的實例時,也必須實例化一個B,也就是說如果沒有B或者B出了疑問 , A就不能 實例化,這就產(chǎn)生了一種依賴,就是A依賴B, 這種依賴從設(shè)計的角度來說就是耦合,顯然它是不能 滿足高內(nèi)聚低耦合的要求的。這個時候就須要 解耦, 當(dāng)然解耦有很多種要領(lǐng) , 而DI就是其中一種。不管任何一種解耦要領(lǐng) ,都不是說使A和B完全沒有聯(lián)系 , 而是把這種聯(lián)系 的實現(xiàn)變得隱晦,不那么直接,但是又很容易實現(xiàn), 而且易于擴(kuò)展,不像上面的代碼那樣,直接new一個B出來。那為什么我們總是把IOC和DI聯(lián)系到一起呢? 是因為DI的基本思想就是IOC,而體現(xiàn)IOC 思想的要領(lǐng) 還有另外一個,那就是Service Locator,這個要領(lǐng) 好像涉及到的很少。其實這些都是從java里面衍生出來的,雖然本人已經(jīng)好幾年沒用java,里面Spring這些都會用到IOC、DI好像他們是緊密連接在一塊的。

您可能感興趣的文章:
  • KindEditor圖片上傳的Asp.net代碼實例
  • ASP.net中網(wǎng)站訪問量統(tǒng)計方法代碼
  • ASP.NET中為TextBox中添加calendar.js示例代碼
  • ASP.NET JSON字符串與實體類的互轉(zhuǎn)換示例代碼
  • asp.net中利用Jquery+Ajax+Json實現(xiàn)無刷新分頁的實例代碼
  • Asp.Net模擬表單提交數(shù)據(jù)和上傳文件的實現(xiàn)代碼
  • Asp.Net中的字符串和HTML十進(jìn)制編碼轉(zhuǎn)換實現(xiàn)代碼
  • ASP.NET自動為URL加上超鏈接的代碼
  • asp.net+ajaxfileupload.js 實現(xiàn)文件異步上傳代碼分享
  • ASP.NET連接sql2008數(shù)據(jù)庫的實現(xiàn)代碼
  • 使用ASP.NET中關(guān)于代碼分離的實例分享

標(biāo)簽:白山 江蘇 新疆 陽泉 張家界 德陽 天門 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net中控制反轉(zhuǎn)的理解(文字+代碼)》,本文關(guān)鍵詞  asp.net,中,控制,反轉(zhuǎn),的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《asp.net中控制反轉(zhuǎn)的理解(文字+代碼)》相關(guān)的同類信息!
  • 本頁收集關(guān)于asp.net中控制反轉(zhuǎn)的理解(文字+代碼)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章