最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2014年09月17日 16:53:19   投稿:whsnow  
控制反轉(zhuǎn),從字面意思來看, 就是控制權(quán)由被動變主動又變?yōu)楸粍樱虮粍幼冎鲃佑肿優(yōu)楸粍?。從這個角度來說,IOC就變得非常容易理解

對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), 而且易于擴展,不像上面的代碼那樣,直接new一個B出來。那為什么我們總是把IOC和DI聯(lián)系到一起呢? 是因為DI的基本思想就是IOC,而體現(xiàn)IOC 思想的要領(lǐng) 還有另外一個,那就是Service Locator,這個要領(lǐng) 好像涉及到的很少。其實這些都是從java里面衍生出來的,雖然本人已經(jīng)好幾年沒用java,里面Spring這些都會用到IOC、DI好像他們是緊密連接在一塊的。

相關(guān)文章

  • SQL通用存儲過程分頁,支持多表聯(lián)合

    SQL通用存儲過程分頁,支持多表聯(lián)合

    以前用.net寫分頁存儲過程時老是一張表就要寫一個procedure.很忙煩.后來有空就整合了一下,做了一個通用的sql分頁存儲,支持多表聯(lián)合查詢分頁.寫的不好的地方,希望大鳥們多多指導(dǎo).使的查詢速度更快.
    2011-11-11
  • VS2019離線安裝方法圖文教程

    VS2019離線安裝方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了VS2019離線安裝方法圖文教程,,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • .net?core?刪除字符串最后一個字符的七大類N種實現(xiàn)方式(總結(jié)篇)

    .net?core?刪除字符串最后一個字符的七大類N種實現(xiàn)方式(總結(jié)篇)

    本文詳細(xì)介紹了七大類、N種不同的方法來刪除字符串的最后一個字符,涵蓋了從簡單的字符串方法到使用StringBuilder、數(shù)組操作、Linq以及正則表達式等多種技術(shù)手段,本文給大家介紹.net?core刪除字符串最后一個字符,感興趣的朋友一起看看吧
    2024-10-10
  • 國產(chǎn)化中的?.NET?Core?操作達夢數(shù)據(jù)庫DM8的兩種方式(操作詳解)

    國產(chǎn)化中的?.NET?Core?操作達夢數(shù)據(jù)庫DM8的兩種方式(操作詳解)

    這篇文章主要介紹了國產(chǎn)化之?.NET?Core?操作達夢數(shù)據(jù)庫DM8的兩種方式,這里提供兩種方式是傳統(tǒng)的DbHelperSQL方式和Dapper?方式,每種方式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • .Net8.0 WebApi發(fā)布到IIS詳細(xì)步驟

    .Net8.0 WebApi發(fā)布到IIS詳細(xì)步驟

    本文主要介紹了.Net8.0 WebApi發(fā)布到IIS詳細(xì)步驟, 文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • ASP.NET打開新頁面而不關(guān)閉原來的頁面 實例代碼

    ASP.NET打開新頁面而不關(guān)閉原來的頁面 實例代碼

    這篇文章介紹了ASP.NET打開新頁面而不關(guān)閉原來的頁面 實例代碼,有需要的朋友可以參考一下,希望對你有所幫助
    2013-07-07
  • ASP.NET Core+Docker+Jenkins實現(xiàn)持續(xù)集成的完整實例

    ASP.NET Core+Docker+Jenkins實現(xiàn)持續(xù)集成的完整實例

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core+Docker+Jenkins實現(xiàn)持續(xù)集成的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • .Net彈性和瞬態(tài)故障處理庫Polly實現(xiàn)彈性策略

    .Net彈性和瞬態(tài)故障處理庫Polly實現(xiàn)彈性策略

    這篇文章介紹了.Net彈性和瞬態(tài)故障處理庫Polly實現(xiàn)彈性策略的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • ASP.NET2.0 SQL Server數(shù)據(jù)庫連接詳解

    ASP.NET2.0 SQL Server數(shù)據(jù)庫連接詳解

    本文將詳細(xì)介紹如何使用Connection對象連接數(shù)據(jù)庫 。對于不同的.NET 數(shù)據(jù)提供者,ADO.NET采用不同的Connection對象連接數(shù)據(jù)庫。這些Connection對象為我們屏蔽了具體的實現(xiàn)細(xì)節(jié),并提供了一種統(tǒng)一的實現(xiàn)方法。
    2009-07-07
  • asp.net 上傳或下載當(dāng)文件名包含有特殊字符"#"的處理

    asp.net 上傳或下載當(dāng)文件名包含有特殊字符"#"的處理

    在上傳或下載文件時,當(dāng)文件名包含有"#"特殊字符時,上傳以后的文件會被改名字,造成下載也下載不了。
    2010-03-03

最新評論

绥德县| 安宁市| 彭阳县| 大关县| 陈巴尔虎旗| 梁山县| 翁牛特旗| 子长县| 阿克| 义乌市| 社旗县| 张家界市| 南华县| 望谟县| 高雄县| 长岭县| 温州市| 九台市| 康平县| 辉南县| 宝鸡市| 昌宁县| 延吉市| 白山市| 安多县| 阜新| 大方县| 巧家县| 永年县| 平山县| 宜阳县| 菏泽市| 琼中| 青海省| 兴山县| 镶黄旗| 常山县| 长垣县| 松桃| 罗田县| 黄龙县|