2010-08-07 30 views

回答

1

簡而言之,依賴注入意味着您不需要創建所需的對象,並且可以根據接口進行編程。由此,一個類更容易被測試,更獨立於其他代碼。

兩個例子:

第一個例子:

using Core.Service.X; 
using Core.Service.Y; 

public class A //without injection 
{ 
    private ServiceX servicex; 
    private ServiceY servicey; 

    public A() 
    { 
    servicex = new ServiceX(); 
    servicey = new ServiceY(); 
    } 
} 

在這個例子中,A級必須知道ServiceX和ServiceY及其履行情況(這是一個非常簡單的例子,ServiceX和ServiceY本身可能會有複雜的構造函數

第二個示例:

using Core.ServiceInterfaces; 

public class B //without injection 
{ 
    private IServiceX servicex; 
    private IServiceY servicey; 

    public A (IServiceX serx, IServiceY, sery) 
    { 
    servicex = serx; 
    servicey = sery; 
    } 
} 

在這個例子中,類沒有意識到任何類的具體實現,它不會自己構造它們。通過這種方式,班級更加可以重複使用,因爲另一方(通常是城堡溫莎,統一或MEF等DI容器)會照顧這些建築。

+0

你在第二個例子中有一個錯字。是不是一個DI? – SoftwareGeek 2010-08-07 16:20:34

0

把它想象成一個可配置的聲明對象工廠。工廠不會調用「new」來實例化對象,而是爲您提供它們。

依賴注入需要一定的設計風格(例如,使用接口),以保持代碼的分層和模塊化。測試會更容易,通過更改實現而不是修改代碼更容易進行修改。

相關問題