日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2012 依赖注入框架

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2012 依赖注入框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容來自維基百科的控制反轉詞條

控制反轉(英語:Inversion of control,縮寫為IoC),也叫做依賴注入Dependency Injection,簡稱DI),是面向對象編程中的一種設計原則,可以用來減低計算機代碼之間的耦合度

?

起源

早在2004年,Martin Fowler就提出了“哪些方面的控制被反轉了?”這個問題。他總結出是依賴對象的獲得被反轉了。基于這個結論,他為控制反轉創造了一個更好的名字:依賴注入。許多非凡的應用(比HelloWorld.java更加優美,更加復雜)都是由兩個或是更多的類通過彼此的合作來實現業務邏輯,這使得每個對象都需要,與其合作的對象(也就是它所依賴的對象)的引用。如果這個獲取過程要靠自身實現,那么如你所見,這將導致代碼高度耦合并且難以測試。

IoC 亦稱為 “依賴倒置原理”("Dependency Inversion Principle") (Martin 2002:127)。差不多所有框架都使用了“倒置注入(Fowler 2004)技巧,這可說是IoC原理的一項應用。SmallTalk,C++, Java 或各種.NET 語言等面向對象程序語言的程序員已使用了這些原理。

控制反轉是Spring Framework的核心。

應用控制反轉,對象在被創建的時候,由一個調控系統內所有對象的外界實體,將其所依賴的對象的引用,傳遞給它。也可以說,依賴被注入到對象中。所以,控制反轉是,關于一個對象如何獲取它所依賴的對象的引用,這個責任的反轉

技術性說明

術語

Class X 依賴于 class Y 只在如下狀況中成立:

  • X 擁有 Y 的控制并且在 X 中使用 Y
  • X 是 Y 的派生物
  • X 依賴于 Z,而 Z 又依賴于 Y (transitivity)

X 依賴于 Y 并不表示 Y 也依賴于 X。但如果 X 和 Y 同時依賴于對方,這種依賴性被稱作 循環依賴:這時,X 無法和 Y 分開單獨使用,反之亦然。如果在一個面對對象程式中擁有太多的循環依賴,這可能表示這個程式是個欠佳的設計。

打破依賴

如果類X的一個實例對象x調用了類Y的一個實例對象y的方法,那么就稱類X依賴于類Y。為了打破這種依賴——“反轉”,首先我們可以引入一個接口I(第三方類),接口I中聲明了對象y將被對象x調用的所有方法;然后,我們對類Y稍加改造,使其實現接口I;最后,我們把在對象x中對y的調用改為對接口I中對應方法的調用。經過這番改造后,原先的X對Y的依賴關系不存在了,類X和Y現在都依賴于接口I。

這種通過引入接口I來消除類X對Y的依賴的方法,被稱作“控制反轉”,又叫做“依賴注入”。

需要注意的是,類Y可能還依賴于其他類。在應用反轉之前,X依賴于Y,從而也間接依賴于Y所依賴的所有“其他類”。應用控制反轉之后,不僅X對Y的直接依賴,且前面提到的那些所有的間接依賴也消除了。而新引入的接口I則不依賴于任何類。

IoC 的類型

Martin Fowler 將 IoC 分成三類。

  • Type 1 : 基于interface (interface injection)。Depending object 需要實作(implement) 特定 interface 以供框架注入所需物件。
  • Type 2 : 基于setter (setter injection)。Depending object 需要實現特定 setter 方法 (但不需要依賴特定interface),
  • Type 3 : 基于constructor (constructor injection)

有的框架,如Plexus 提出Type 4 IoC,以field為基礎,惟此法到目前為止尚未被廣泛接納。[1]

各種框架不一定支援以上所有IoC類型。例如SpringFramework 支援Type 1、Type 2 及 Type 3 IoC,而 Plexus支援 Type 2、Type 3 和 Type 4。

控制反轉應用實例

C++

  • PocoCapsule IoC and DSM framework GPL開源的,支持完全非侵入C++的控制反轉(IoC)及領域特定建模(DSM)容器

Java

使用Java語言寫成的程式在控制反轉容器(Inversion of Control Container)里應用了控制反轉(Martin 2004)。軟件需要一個來自容器的物件,而容器自行建構物件和它的附屬物。ATG 的 [[en:Dynamo Application Server|Dynamo 應用程式服務器]是第一個利用這途徑的環境之一,近來關于這些容器的例子包含了 HiveMind、PicoContainer、Spring Framework(注意 Spring 是一個完整的企業平臺,而非 IOC容器)、Apache ExcaliburSeasar 和 DPML Metro.

.NET

  • Spring.NET
  • ObjectBuilder
  • Structuremap
  • CastleProject
  • Seasar
  • Unity
  • Autofac
  • Ninject
  • LinFu?Hiro
  • Nlite mini

轉載于:https://www.cnblogs.com/codeyu/archive/2012/03/19/2406455.html

總結

以上是生活随笔為你收集整理的2012 依赖注入框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。