Java 接口目录结构?

问题描述 投票:0回答:8

Java 中的接口应该驻留在自己的目录中吗?或者应该将接口及其实现都放在同一目录(包)中?谢谢。

java interface directory-structure
8个回答
17
投票

接口并不特别需要自己的目录。它们应该放在有意义的地方,就像类应该放在有意义的地方一样。在许多情况下,将它们放在同一个地方可能是有意义的。


15
投票

我见过的一种模式是将接口放在基目录中,然后将实现放在那里的子目录中。

例如,接口可能位于此处:

com.myproject.data.dao.CustomerDao (some people do ICustomerDao for interfaces, but some don't like that.)
com.myproject.data.dao.ProductDao

实现可能会在这里:

com.myproject.data.dao.hibernate.HibernateCustomerDao
com.myproject.data.dao.hibernate.HibernateProductDao
com.myproject.data.dao.someotherorm.SomeOtherOrmCustomerDao
etc.

这可能在某些情况下有效,但在其他情况下可能不起作用,但这只是需要考虑的事情。


7
投票

既然已经有一些优点了,我只想补充一件事:

在某些项目中,我们甚至将所有接口放入一个子项目(maven 模块)中,并将实现放入另一个子项目中。通过这种方式,可以将接口与实现完全分离,并在项目的早期阶段完成接口项目,并将其交付给使用这些接口工作的其他团队。在每个项目中,我们都使用相同的包。

总的来说,我会说,你应该将接口和它们的实现分开,方式并不重要,只要你保持一致即可。


1
投票

同一个包裹。用户不应该知道或关心他们正在使用一个界面


1
投票

无论你想要在哪里,但将接口保留在相同的包和目录结构中绝对没问题。只需查看 java api 即可。如果您选择任何一个包,您会注意到许多包都包含类和接口。有些接口是由同一个包中的类实现的,有些则不是。

我认为最糟糕的做法是坚持必须有一个不同的接口目录。我见过 /services 和 /impl 等目录,它们只会弄乱目录结构。在我目前的工作场所,我们雇佣了很多来来去去的承包商,我们的一些项目有多种类型的界面目录。我认为使用单独目录有意义的唯一情况是,如果您打算将接口复制到其他项目(例如 EJB)中,但即使如此,如果您为接口使用共享项目,它们也可以具有相同的包。

所以简短的答案是,任何你想要的地方,但不要认为你需要分离你的类和接口。在许多情况下,最好将它们保存在同一个包/目录中。


0
投票

完全不需要将接口放在同一个目录(包)中。如果您的接口具有公共访问权限,那么您可以将其导入任何包中的任何位置。


0
投票

将它们放在“lib”文件夹中有意义吗?我看到一个年轻的程序员这样做,我对此感到非常厌恶。也许这是某个地方的一个约定?


-1
投票

我读到的问题(但它的表述很奇怪)不是接口是否应该在自己的目录中。问题是您是否应该重新创建完整的目录结构(粗体强调问题标题中的内容),其中一个分支仅包含接口,如下所示:

pureooabstraction/
 |
 |_com/
   |
   |_example/
     |
     |__SomeInterface.java
     |__SomeOtherInterface.java

src/
 |
 |_com/
   |
   |_example/
     |
     |__SomeClass.java
     |__...

其中pureooabstraction/目录struct仅包含“纯抽象类”(从面向对象的角度来看,而不是Java“抽象”定义),即Java中的接口。

“代码”所在的小实现细节(在 OOA/OOD 级别不存在)将位于 src/ 目录中。

如果您的开发过程从 OOA 到 OOD 再到 OOP,这当然是有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.