亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

接口和類之間的一對一關系

接口和類之間的一對一關系

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

2 回答

?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

DI 可以只用類而不用接口來制作。您注冊類型,然后注入類型。就這樣。在談論單元測試中的模擬時會出現差異。在 c# 中,您只能模擬虛擬或抽象(也是虛擬)成員。因此,如果你希望你的代碼是可測試的,你需要用virtual關鍵字標記所有公共成員,或者在你的實現中使用接口而不是真正的類。在 Java 中,默認情況下所有方法都是虛擬的,因此它們不會與一對一接口混淆,因為它們可以模擬所有內容。



查看完整回答
反對 回復 2023-03-23
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

依賴注入用于包含和分離關注點。你想在你的代碼中做一些新的事情,你添加一個依賴接口來實現。然后您可以測試您的代碼,甚至不必為該接口的實現操心,直到稍后。

不過,您的問題是關于接口和實現之間的一對一關系。從我的角度來看,這無關緊要,因為您只關心已經聲明的接口上下文中的實現,而不是使用它的地方。例如,你可以讓一個類繼承多個可注入接口,這通常表明它有太多的責任,但這是可以做到的。您可以有多個繼承相同接口的類,然后根據 DI 配置使用。甚至在某些情況下,DI 容器會處理我通常委托給工廠的東西,主要是為您提供基于某些參數的接口的實現。

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


查看完整回答
反對 回復 2023-03-23
  • 2 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號