【问题标题】:Should Interfaces Live In The Same Namespace As The Concrete Classes That Implement Them? [closed]接口是否应该与实现它们的具体类在同一个命名空间中? [关闭]
【发布时间】:2011-01-26 02:13:43
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    它们应该存在于对它们来说合乎逻辑的命名空间中;这意味着对于它们是否应该驻留在同一个命名空间中没有明确的规则。您会发现相对抽象的命名空间通常不会与其实现并存,而与其实现者更接近 1:1 的接口更有可能彼此并存。

    一个更重要的考虑是保持接口可重复使用——通常这意味着更多地考虑与接口一起进入程序集的内容,而不是命名空间。

    【讨论】:

      【解决方案2】:

      Separate Interfaces 上查看 Martin Fowler 的模式,它可能会帮助您决定将它们放在哪里。

      【讨论】:

      【解决方案3】:

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

      事实上,如果接口的用户不需要知道具体的类,如果有多个实现,如果定义接口的组与实现某个版本的组不同(所有这些是有效的情况),那么将实现和接口命名空间分开可能是明智之举。

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

      【讨论】:

      • 是的,我一直在创建我的项目,其中包含域对象的命名空间和不同的接口命名空间。我在网上查看了一些示例项目,并注意到他们将域对象接口和具体实现组合在一起,只是想看看大多数人是不是这样做的。
      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 2021-11-26
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多