[英]Explain “Dependency Injection vs Service Location” when using IoC containers
依賴注入的重點是您可以執行
public Foo(IBar bar)
{
this.bar = bar;
}
並將Foo
類與Bar
類分離。 然后,您可以使用StructureMap,Unity或20多個依賴注入容器中的任何其他容器來配置要用於每個協定的哪個類或實例(=接口,可以選擇加上名稱),然后讓DI容器解析所有依賴關系。
這樣做是因為它允許您通過模擬類的依賴關系來有效地對類Foo
進行單元測試。 您通常不會自己明確注入依賴項。
我認為,如果僅將依賴項注入用作一次性的東西,那么依賴項注入通常效果最好。 也就是說,您可以在應用開始時解析主應用程序服務,包括其所有依賴項,然后在應用程序運行時使用服務對象的初始化網絡。
您避免使用服務定位器(這是您的第二個代碼示例),因為1.它會將您IBar
到特定的DI容器,並且2.您IBar
的依賴項隱藏了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.