我正在编写我的第一个“API jar”,它将成为开源库并被(可能)其他开发人员使用。我读过 Joshua Block's thesis on effective API design ,他谈到的其中一件事——我从来没有想到过——是他的最小化访问和最大化信息隐藏的概念。基本上,您只希望您的 API 开发人员能够访问他们将使用的 Java 对象,而不希望您的 API 开发人员能够访问您的库的任何“内容”。
在我作为 Java 开发人员的几年里,除了 public
之外,我从未需要创建任何类。此外,我也从未使用过嵌套类。所以我坐在这里想知道如何在我的 Java API 中实现这种“信息隐藏”最佳实践?而且我认为私有(private)类(可能还有嵌套类)就是答案。但是从哪里开始呢?
- 每个
.java
源文件都需要至少1 个public
类才能编译。所以对于我来说,要创建一个private
类(和非嵌套类),我需要“将它与一个public
类捆绑在一起。对我来说这只有 如果public
/private
类密切相关。但是如果我的 API 有一部分只包含private
类怎么办(出于可访问性最小化目的)与任何其他public
类似物无关? - 什么时候使
private
类嵌套,什么时候使它成为非嵌套?或者这只是一个偏好问题?
最佳答案
包私有(private)的类(即没有任何可见性修饰符)仅对同一包的类可见。这是一种让一个类对 API 的其他几个类可见,但对外界不可见的方法。
嵌套私有(private)类对于创建非公共(public)类也很有用,它们的范围甚至更窄:它们仅对封闭类可见。
我建议看看 Guava's source code优秀的 API 设计。您会看到各种将内部结构隐藏到外部的技术。
关于java - 如何使用私有(private) Java 类进行有效的 API 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14003074/