Java中的接口应该放在自己的目录中吗?还是接口和它的实现都应该放在同一个目录(包)中?谢谢。
应该将Java中的接口放置在自己的目录中,而不是与其实现类放在同一个目录(包)中。这样可以更好地组织代码并使其更易于维护。Java中的接口应该放在自己的目录中吗?还是接口和它的实现都应该放在同一个目录(包)中?谢谢。
应该将Java中的接口放置在自己的目录中,而不是与其实现类放在同一个目录(包)中。这样可以更好地组织代码并使其更易于维护。接口不一定需要自己的目录。它们应该放在合适的位置,就像类应该放在合适的位置一样。在许多情况下,把它们放在同一个地方可能是有意义的。
我见过的一种模式是将接口放在基础目录中,然后从那里的子目录中放置实现。
例如,接口可以放在这里:
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.
这可能在某些情况下有效,但在其他情况下可能无效,但这只是一个值得考虑的想法。
同一個套件。使用者不應該知道或關心他們正在使用一個介面。
我认为最糟糕的做法是坚持认为必须为接口使用不同的目录。我见过像/services和/impl等的目录,这些目录只会混乱目录结构。在我的当前工作场所,我们雇用了很多来去自如的承包商,我们的一些项目有多种类型的接口目录。我认为唯一使用单独目录的时候是如果您计划将接口复制到其他项目中,例如用于EJBs,但即使这样,如果您使用共享项目来处理接口,则它们可以具有相同的包。
因此,简短的回答是,您可以放在任何地方,但不要认为您需要将类和接口分开。在许多情况下,将它们保留在同一包/目录中更可取。
将接口放置在相同的目录(包)中并非必须。如果您的接口具有公共访问权限,则可以在任何包中导入它。
pureooabstraction/
|
|_com/
|
|_example/
|
|__SomeInterface.java
|__SomeOtherInterface.java
src/
|
|_com/
|
|_example/
|
|__SomeClass.java
|__...
纯抽象/(pureooabstraction/)目录的结构只包含“纯抽象类”(从面向对象的角度来看,而不是Java中的“抽象”定义),也就是Java中的接口。
而琐碎的实现细节(在OOA/OOD级别不存在)所在的地方即为 src/ 目录。
如果您的开发过程是从OOA到OOD再到OOP,那么这肯定是有道理的。