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

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

接口和類之間的一對(duì)一關(guān)系

接口和類之間的一對(duì)一關(guān)系

哈士奇WWW 2023-03-23 15:31:49
我是一名 C# 程序員。在我的上一份工作和我現(xiàn)在的工作中,為我們編寫的大多數(shù)類創(chuàng)建接口是很常見的。例如,當(dāng)我們有一個(gè)名為 Spork 的類時(shí),我們將添加一個(gè)包含 Spork 公共方法的接口 ISpork。這些接口用于依賴注入(例如通過(guò) StructureMap)和在單元測(cè)試中創(chuàng)建模擬(例如使用 Rhino Mocks 或 Moq) .幾周前,我參加了一個(gè) Javs 開發(fā)人員的演講。我們不知何故開始談?wù)摻涌冢坪跽娴暮荏@訝任何人都會(huì)在類和接口之間有很多一對(duì)一的關(guān)系?,F(xiàn)在我的問(wèn)題是:這些年來(lái)我做錯(cuò)了嗎?或者這是 Java vs C# 的事情?如果是,Java 中如何處理模擬和依賴注入?PS:我主要對(duì) DI 和模擬方面感興趣,以及對(duì)許多只有一個(gè)實(shí)現(xiàn)類的接口的相關(guān)需求(或沒有?)。我認(rèn)為情況重新。既不會(huì)被模擬也不會(huì)被注入的類非常相似。但令我感到驚訝的是,作為 C# 開發(fā)人員,對(duì)我來(lái)說(shuō)似乎很簡(jiǎn)單的事情對(duì)于那個(gè) Java 開發(fā)人員來(lái)說(shuō)是完全聞所未聞的。
查看完整描述

2 回答

?
慕斯709654

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

DI 可以只用類而不用接口來(lái)制作。您注冊(cè)類型,然后注入類型。就這樣。在談?wù)搯卧獪y(cè)試中的模擬時(shí)會(huì)出現(xiàn)差異。在 c# 中,您只能模擬虛擬或抽象(也是虛擬)成員。因此,如果你希望你的代碼是可測(cè)試的,你需要用virtual關(guān)鍵字標(biāo)記所有公共成員,或者在你的實(shí)現(xiàn)中使用接口而不是真正的類。在 Java 中,默認(rèn)情況下所有方法都是虛擬的,因此它們不會(huì)與一對(duì)一接口混淆,因?yàn)樗鼈兛梢阅M所有內(nèi)容。



查看完整回答
反對(duì) 回復(fù) 2023-03-23
?
元芳怎么了

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

依賴注入用于包含和分離關(guān)注點(diǎn)。你想在你的代碼中做一些新的事情,你添加一個(gè)依賴接口來(lái)實(shí)現(xiàn)。然后您可以測(cè)試您的代碼,甚至不必為該接口的實(shí)現(xiàn)操心,直到稍后。

不過(guò),您的問(wèn)題是關(guān)于接口和實(shí)現(xiàn)之間的一對(duì)一關(guān)系。從我的角度來(lái)看,這無(wú)關(guān)緊要,因?yàn)槟魂P(guān)心已經(jīng)聲明的接口上下文中的實(shí)現(xiàn),而不是使用它的地方。例如,你可以讓一個(gè)類繼承多個(gè)可注入接口,這通常表明它有太多的責(zé)任,但這是可以做到的。您可以有多個(gè)繼承相同接口的類,然后根據(jù) DI 配置使用。甚至在某些情況下,DI 容器會(huì)處理我通常委托給工廠的東西,主要是為您提供基于某些參數(shù)的接口的實(shí)現(xiàn)。

無(wú)論哪種方式,這有什么關(guān)系?如果(減少到荒謬)每個(gè)類有一個(gè)開發(fā)人員,那么他們將只編寫代碼和測(cè)試并定義所需依賴項(xiàng)的接口,讓其他人實(shí)現(xiàn)它們。


查看完整回答
反對(duì) 回復(fù) 2023-03-23
  • 2 回答
  • 0 關(guān)注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報(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)