在接口和实现类方面,解决方案/项目的组织是否有标准?我正在开发一个MVP、DDD应用程序,想了解其他人是如何布置项目以及为什么采取这种方式的反馈意见。谢谢!
在接口和实现类方面,解决方案/项目的组织是否有标准?我正在开发一个MVP、DDD应用程序,想了解其他人是如何布置项目以及为什么采取这种方式的反馈意见。谢谢!
它们应该生存在逻辑上属于它们的命名空间中;这意味着对于它们是否应该位于同一个命名空间中没有严格的规定。通常抽象一些的命名空间不会与其实现位于一起,而与其实现直接相关的接口更可能在一起。
更重要的考虑是保持接口可重用--通常这意味着更多地考虑将什么放入与接口一起的程序集中,而不是命名空间。
可以查看马丁·福勒(Martin Fowler)关于分离接口的设计模式,这可能会帮助您决定将它们放置在哪里。
毫无疑问,没有必要这样做。
事实上,如果接口的用户不需要知道具体的类,如果有多种实现方式,并且定义接口的组与实现某个版本的组不同(这些都是有效的情况),那么将实现和接口命名空间分开可能是明智的选择。
我不太确定C#,但在Java中,包成员资格是一种重要的组织模式,可以强制执行方法的可见性。如果要使用包私有的内容,则基本上必须将实现类放在同一个包中(这样您可能不能将它们与接口放在一起)。