如何构建应用程序目录层次结构中的接口

将它们全部放在一个单独的文件夹结构中,还是与实现它们的类一起放入?

您永远不应该将接口与实现它们的类放在一起(除非这些类满足下面的要求)。 这样做会在接口和实现者之间引入紧密耦合 ,如果不同时引用实现者,您将无法创建接口的其他实现。

你基本上有两个选择:

  • 将接口与消耗它们的类放在一起。 这仍然会产生紧密耦合,但这种耦合问题较少,因为消费者经常住在提供相关类型的库中。 在这种情况下,如果您在此库中有实现者,他们可以实现接口而不引入任何其他耦合。
  • 为了最终松耦合 ,将接口放在一个单独的库中。 这为您提供了更大的灵活性,但也可能需要额外的工作。