java - 接口(interface)应该放在单独的包中吗?

标签 java interface package

我是一个团队的新手,该团队正在处理一个相当大的项目,其中包含许多组件和依赖项。对于每个组件,都有一个 interfaces 包,用于放置该组件的公开接口(interface)。这是一个好习惯吗?

我通常的做法是接口(interface)和实现放在同一个包中。

最佳答案

同时放置接口(interface)和实现是常见的地方,似乎没有问题。

以 Java API 为例——大多数类的接口(interface)及其实现都包含在同一个包中。

java.util 为例包装:

包含Set等接口(interface), Map , List , 同时也有 HashSet 等实现, HashMapArrayList .

此外,Javadocs 旨在在这些条件下正常工作,因为它在显示包的内容时将文档分为 InterfacesClasses View 。

只为接口(interface)提供包实际上可能有点过分,除非有大量的接口(interface)。但是仅仅为了这样做而将接口(interface)分离到自己的包中听起来是不好的做法。

如果需要将接口(interface)的名称与实现区分开来,可以有一个命名约定以使接口(interface)更易于识别:

  • 在接口(interface)名称前加上 I . .NET 框架中的接口(interface)采用这种方法。很容易看出 IList是一个列表的接口(interface)。

  • 使用 - able后缀。 这种方法在 Java API 中很常见,例如 Comparable , Iterable , 和 Serializable仅举几例。

关于java - 接口(interface)应该放在单独的包中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1004980/

相关文章:

java - 如何向JTable中插入数据?

c# - "is"和 "IsAssignableFrom"C# 之间的区别

interface - "Code in Interfaces"Kotlin,他们如何避免 "deadly diamond of death"?

java - 准备好发布 Java 程序

go - 在同一个目录中有两个包有意义吗?

java - digitalocean 上的 Tomcat7,已启动但可从浏览器访问

java - 如何使用 PowerMock(ito) 获取对传递给 Thread 构造函数的 Runnable 实例的引用?

Java 编译、包和相对路径

java Servlet 2个数字相加

c# - 使类依赖项出现在界面中而不是属性