接口是否应该与实现它们的具体类一样存在于同一命名空间中?

时间:2011-01-26 02:13:44

标签: .net domain-driven-design mvp project-structure

关于接口和实现它们的类,是否有关于解决方案/项目组织方式的标准?我正在研究一个MVP,DDD应用程序,并希望听到关于其他人如何布置他们的项目以及他们为什么这样做的反馈。谢谢!

3 个答案:

答案 0 :(得分:11)

他们应该住在对他们合乎逻辑的命名空间中;这意味着它们是否应该驻留在同一名称空间中没有确定的规则。你会发现相对抽象的命名空间通常不会与它们的实现一起存在,而与它们的实现者更为1:1的接口更可能彼此并存。

更重要的考虑因素是保持接口的可重用性 - 通常这意味着更多地考虑与接口一起进入组件的内容,而不是名称空间。

答案 1 :(得分:4)

Separate Interfaces上查看Martin Fowler的模式,它可能会帮助您决定放置它们的位置。

答案 2 :(得分:1)

当然没有令人信服的理由这样做。

实际上,如果接口的用户不需要知道具体类,并且有多个实现,并且定义接口的组与实现其特定版本的组不同(所有这些)是有效的情况),然后分离实现和接口名称空间可能是明智的。

我对C#不太了解,但在Java中,包成员资格是强制方法可见性的重要组织模式。如果你想使用包私有的东西,你基本上必须在同一个包中将实现类组合在一起(这样你就不能将它们与接口放在一起)。

相关问题