假設在C#
(或具有抽象接口)的程序,其中第一部分(A)和第二部分(B)依賴於第三部分(C)。例如,假設與在類ClassA
項目A和ClassB
B工程項目C.取決於ClassC
例如三個項目的Visual Studio解決方案,我想接口和實現分離,所以我創建界面IClassC
和ClassA
和ClassB
使用。我應該在哪個項目中聲明接口IClassC
?用於聲明接口的地方
2
A
回答
1
大多數情況下,它將在項目C中,但是如果您想要組裝是可插入式的,那麼意味着您可以更改接口C的實現。並且您不想重新構建項目A和B每次當您更改項目C中的代碼時。
在這種情況下,您需要將DIP principle應用於反向依賴關係,因此接口C應該位於新項目調用IC中。當你用C代碼更改或使用C替換C
C -> IC
A -> IC
B -> IC
所以用這種方式」,它也不會影響到A和B.
:相關性將改變:A -> C
B -> C
要
1
在項目C,或單獨的接口工程項目我
2
這聽起來像項目C不依賴於項目A或項目B,但顯然需要了解的接口(以便類可以實現它)。因此它已將置於ProjectC或每個項目所依賴的其他項目中。 (您可能有一個單獨的項目只是爲接口,但我很少發現,是有用的。)
0
您可以在ClassC項目中聲明它,這將是從一個參照點罰款。
您也可以將它放置在它自己的接口項目中,這將使您能夠單獨引用接口,例如測試項目。
相關問題
- 1. 接口聲明
- 2. 聲明接口
- 3. 如何聲明返回的接口對象聲明其方法
- 4. 要聲明或不聲明DAO接口方法中的DataAccessException?
- 5. 使用接口聲明
- 6. COM接口聲明
- 7. 聲明接口中的所有繼承接口的方法?
- 8. 拋出聲明和接口方法
- 9. 聲明的接口方法具有實現該接口
- 10. 接口聲明的訪問說明符
- 11. 關於如何正確聲明互操作接口的說明
- 12. 抽象接口聲明
- 13. 聲明實現接口
- 14. 在哪裏聲明接口?
- 15. 目標C接口聲明
- 16. libusb接口已經聲明
- 17. 聲明實現接口
- 18. 適用於匿名接口聲明的風格約定?
- 19. 使用其中一個接口聲明
- 20. 用兩個接口聲明變量
- 21. C++接口聲明/定義和用法
- 22. PHP中的接口聲明 - 爲什麼聲明混合?
- 23. 在類或接口中聲明常量的更好的地方是什麼?
- 24. 無效方法參考引用聲明接口
- 25. 聲明接口內的數組對象
- 26. 「找不到NSObject的接口聲明」?
- 27. 表單事件的Typescript接口聲明
- 28. 頭中聲明的多個接口
- 29. Angular 2/4接口聲明的關注
- 30. 無法找到'UIResponder'的接口聲明