解决方案/项目如何组织接口和实现它们的类是否存在标准?我正在开发一个MVP和DDD应用程序,并希望听到有关其他人如何布置项目以及为什么要这样做的反馈。谢谢!!接口应该与实现它们的具体类相同吗?
10
A
回答
10
他们应该生活在符合逻辑的名称空间中;这意味着他们是否应该驻留在相同的名称空间中并没有明确的规则。您会发现相对抽象的名称空间通常不会与其实现一起生活,而与其实现者更为1:1的接口更可能保持彼此并排。
更重要的考虑是保持接口的可重用性 - 通常这意味着更多地考虑与接口一起进入程序集的内容,而不是命名空间。
4
检查Martin Fowler的模式Separate Interfaces,它可能会帮助您决定将它们放在哪里。
1
确实没有令人信服的理由这样做。实际上,如果接口的用户不需要知道具体的类,并且如果有多个实现,并且定义接口的组不同于实现它的某个版本的组(所有组的这是有效的情况),那么分离实现和接口名称空间可能是明智的。
我对C#不太确定,但在Java中,程序包成员资格是实施方法可见性的重要组织模式。如果你想使用包私有的东西,你基本上必须将实现类在同一个包中组合在一起(所以你可能不能将它们与接口放在一起)。
相关问题
- 1. JPA实体和DDD实体应该是相同的类吗?
- 2. 我的Doctrine实体应该实现接口吗?
- 3. 实现从抽象类可比接口与具体的子类
- 4. 实现接口具体
- 5. 实现与不同类型的接口
- 6. 我应该用Python中的常量接口实现类吗?
- 7. 类实现接口应该能够只添加同一类
- 8. 接口实现与空体
- 9. 接口与具体类
- 10. 所有类应该实现IDisposable接口吗?
- 11. 包含相同接口的类实现接口
- 12. 实现相同接口的接口内的内部类,我们通过这个实现了什么?
- 13. 的DTO和实体实现相同的接口
- 14. AS3类 - 我应该使用它们吗?
- 15. 接口上的自定义属性或实现它们的类?
- 16. 将接口实例分配给实现该接口的类
- 17. 一个类可以实现具有相同datamember名称但不同类型的多个接口吗?
- 18. 为实现相同的接口
- 19. 哪个实现相同的接口
- 20. 相同的接口,实现差异
- 21. 创建实现相同的接口
- 22. 即使它具有相同的功能,Golang结构也不会实现接口
- 23. 声明的接口方法具有实现该接口
- 24. 不同的osgi捆绑与相同接口的实现 - 放置该接口的位置?
- 25. 实现多个具有相同方法的接口
- 26. DependencyInjection具有实现相同接口的缓存和存储库
- 27. Java - 处理实现1接口的具体类的错误
- 28. javax.json对象具有相同的方法,但它们不是通用接口的实现。如何投射?
- 29. 域驱动设计和实体框架中的实体应该相同吗?
- 30. dto应该实现一个关联的接口吗?
+1有趣的是,我知道tris是[依赖倒置原理(pdf)](http://www.objectmentor.com/resources/articles/dip.pdf)。 – 2011-01-26 03:31:49
在这种情况下澄清了我的疑惑:http://stackoverflow.com/questions/5840219/why-should-we-place-interfaces-with-classes-that-use-them-rather-than-those-hathat – 2011-04-30 08:23:20