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

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

通過(guò)構(gòu)造函數(shù)或?qū)傩栽O(shè)置器進(jìn)行依賴注入?

通過(guò)構(gòu)造函數(shù)或?qū)傩栽O(shè)置器進(jìn)行依賴注入?

侃侃無(wú)極 2019-09-19 09:32:19
我正在重構(gòu)一個(gè)類(lèi)并為它添加一個(gè)新的依賴項(xiàng)。該類(lèi)目前正在構(gòu)造函數(shù)中使用其現(xiàn)有依賴項(xiàng)。因此,為了保持一致性,我將參數(shù)添加到構(gòu)造函數(shù)中。當(dāng)然,對(duì)于單元測(cè)試,有一些子類(lèi)加上甚至更多,所以現(xiàn)在我正在玩改變所有構(gòu)造函數(shù)的游戲來(lái)匹配,并且它需要很長(zhǎng)時(shí)間。這讓我覺(jué)得使用帶有setter的屬性是獲得依賴關(guān)系的更好方法。我認(rèn)為注入的依賴項(xiàng)不應(yīng)該是構(gòu)造類(lèi)實(shí)例的接口的一部分。您添加了一個(gè)依賴項(xiàng),現(xiàn)在所有用戶(子類(lèi)和任何直接實(shí)例化您的用戶)突然知道它。這感覺(jué)就像打破了封裝。這似乎不是現(xiàn)有代碼的模式,所以我希望找出一般的共識(shí)是什么,構(gòu)造函數(shù)與屬性的優(yōu)缺點(diǎn)。使用屬性設(shè)置器更好嗎?
查看完整描述

3 回答

?
翻過(guò)高山走不出你

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

這要看情況 :-)。

如果沒(méi)有依賴項(xiàng),類(lèi)無(wú)法完成其工作,則將其添加到構(gòu)造函數(shù)中。該類(lèi)需要新的依賴項(xiàng),因此您希望您的更改能夠破壞事物。此外,創(chuàng)建一個(gè)未完全初始化的類(lèi)(“兩步構(gòu)造”)是反模式(IMHO)。

如果類(lèi)可以在沒(méi)有依賴項(xiàng)的情況下工作,那么setter就可以了。


查看完整回答
反對(duì) 回復(fù) 2019-09-19
?
絕地?zé)o雙

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

一般優(yōu)選的方法是盡可能多地使用構(gòu)造器注入。

構(gòu)造函數(shù)注入準(zhǔn)確地說(shuō)明了對(duì)象正常運(yùn)行所需的依賴項(xiàng) - 沒(méi)有什么比新建一個(gè)對(duì)象更令人討厭,并且在調(diào)用一個(gè)方法時(shí)因?yàn)闆](méi)有設(shè)置某個(gè)依賴項(xiàng)而使它崩潰。構(gòu)造函數(shù)返回的對(duì)象應(yīng)處于工作狀態(tài)。

嘗試只有一個(gè)構(gòu)造函數(shù),它保持設(shè)計(jì)簡(jiǎn)單并避免歧義(如果不是人類(lèi),DI容器)。

當(dāng)你在他的書(shū)“.NET中的依賴注入”中使用Mark Seemann所稱(chēng)的本地默認(rèn)值時(shí),你可以使用屬性注入:依賴是可選的,因?yàn)槟憧梢蕴峁┮粋€(gè)很好的工作實(shí)現(xiàn)但是想讓調(diào)用者指定一個(gè)不同的實(shí)現(xiàn)需要。

(以下的答案)


我認(rèn)為如果注入是強(qiáng)制性的,構(gòu)造函數(shù)注入會(huì)更好。如果這會(huì)添加太多構(gòu)造函數(shù),請(qǐng)考慮使用工廠而不是構(gòu)造函數(shù)。

如果注射是可選的,或者如果你想在中途改變它,那么setter注射是很好的。我一般不喜歡制定者,但這是一個(gè)品味問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2019-09-19
  • 3 回答
  • 0 關(guān)注
  • 625 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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