假设在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'的接口声明