Java接口目录结构?

时间:2010-01-29 17:28:41

标签: java interface directory-structure

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

7 个答案:

答案 0 :(得分:14)

我看到的一种模式是将接口放在基目录中,然后将实现放在子目录中。

例如,接口可能会在这里:

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.

这可能在某些情况下有效,而在其他情况下可能不适用,但只需考虑一些事情。

答案 1 :(得分:11)

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

答案 2 :(得分:5)

由于已经有一些好处,我只想补充一点:

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

总的来说,我会说,你应该分离界面及其实现,只要你与它保持一致,这种方式并不重要。

答案 3 :(得分:0)

相同的包裹。用户不应该知道或不关心他们使用的是接口

答案 4 :(得分:0)

它根本不需要将接口放在同一目录(包)中。如果您的界面具有公共访问权限,则可以将其导入任何包中的任何位置。

答案 5 :(得分:0)

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

我认为最糟糕的做法是坚持要为接口设置不同的目录。我见过像/ services和/ impl等目录,它们只会破坏目录结构。在我目前的工作场所,我们聘请了许多来来往往的承包商,我们的一些项目有多种类型的接口目录。我认为使用单独目录是唯一有意义的,如果您计划将接口复制到其他项目中,例如EJB,但即使这样,如果您使用接口的共享项目,它们也可以拥有相同的包。

如此简短的回答是,无论您想要什么,但不要认为您需要将您的类和接口分开。在许多情况下,最好将它们保存在同一个包/目录中。

答案 6 :(得分:-1)

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

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

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

pureooabstraction / 目录结构只包含“纯抽象类”(从OO的角度来看,不是Java'抽象'定义),也就是接口在Java。

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

如果你的开发过程从OOA到OOD再到OOP,那肯定是有意义的。