Java中的接口应该驻留在自己的目录中吗?或者接口及其实现是否应该放在同一目录(包)中?感谢。
答案 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,那肯定是有意义的。