第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

依賴注入和服務(wù)定位器模式之間有什么區(qū)別?

依賴注入和服務(wù)定位器模式之間有什么區(qū)別?

精慕HU 2019-08-14 17:21:20
依賴注入和服務(wù)定位器模式之間有什么區(qū)別?這兩種模式看起來都像是控制反轉(zhuǎn)原理的實(shí)現(xiàn)。也就是說,一個(gè)對象不應(yīng)該知道如何構(gòu)造它的依賴關(guān)系。依賴注入(DI)似乎使用構(gòu)造函數(shù)或setter來“注入”它的依賴項(xiàng)。使用構(gòu)造函數(shù)注入的示例://Foo Needs an IBarpublic class Foo{   private IBar bar;   public Foo(IBar bar)   {     this.bar = bar;   }   //...}服務(wù)定位器似乎使用了一個(gè)“容器”,它連接了它的依賴關(guān)系并給它foo吧。使用服務(wù)定位器的示例://Foo Needs an IBarpublic class Foo{   private IBar bar;   public Foo()   {     this.bar = Container.Get<IBar>();   }   //...}因?yàn)槲覀兊囊蕾図?xiàng)只是對象本身,所以這些依賴項(xiàng)具有依賴項(xiàng),它們具有更多依賴項(xiàng),依此類推。因此,控制容器的反轉(zhuǎn)(或DI容器)誕生了。示例:Castle Windsor,Ninject,Structure Map,Spring等)但是,IOC / DI容器看起來完全相同像一個(gè)服務(wù)定位器。將它稱為DI容器是一個(gè)壞名字?IOC / DI容器只是另一種服務(wù)定位器嗎?當(dāng)我們有很多依賴關(guān)系時(shí),我們使用DI容器這一事實(shí)的細(xì)微差別是什么?
查看完整描述

3 回答

?
30秒到達(dá)戰(zhàn)場

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊

差異可能看起來很小,但即使使用ServiceLocator,該類仍然負(fù)責(zé)創(chuàng)建其依賴項(xiàng)。它只是使用服務(wù)定位器來完成它。使用DI,該類被賦予其依賴性。它既不知道,也不關(guān)心它們來自何處。這樣做的一個(gè)重要結(jié)果是DI示例更容易進(jìn)行單元測試 - 因?yàn)槟梢詫⑵湟蕾噷ο蟮哪M實(shí)現(xiàn)傳遞給它。如果需要,您可以將兩者結(jié)合起來 - 并注入服務(wù)定位器(或工廠)。


查看完整回答
反對 回復(fù) 2019-08-14
?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

服務(wù)定位器隱藏依賴關(guān)系 - 當(dāng)從對象獲取連接時(shí),您無法通過查看對象是否訪問數(shù)據(jù)庫(例如)。使用依賴項(xiàng)注入(至少構(gòu)造函數(shù)注入),依賴項(xiàng)是顯式的。

此外,服務(wù)定位器打破了封裝,因?yàn)樗鼈兲峁┝藢ζ渌麑ο蟮囊蕾囮P(guān)系的全局訪問點(diǎn)。使用服務(wù)定位器,與任何單例一樣

很難為客戶端對象的接口指定前置和后置條件,因?yàn)槠鋵?shí)現(xiàn)的工作可以從外部進(jìn)行干預(yù)。

使用依賴項(xiàng)注入,一旦指定了對象的依賴項(xiàng),它們就會受到對象本身的控制。


查看完整回答
反對 回復(fù) 2019-08-14
  • 3 回答
  • 0 關(guān)注
  • 1159 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號