java - 最小的 API 与便利

标签 java oop interface software-design api-design

我正在尝试设计将在我的应用程序内部使用的界面。效仿 Google 的例子,我努力减少公共(public) API 的困惑。但是,有一些便利方法是根据最小方法定义的。在寻求方便和整洁之间的平衡时,我应该考虑哪些因素?

Google 示例:在 HashBiMap ( doc ) 中:

Why does BiMap have no getKeyForValue() method?

We did think about it (Doug Lea even half-jokingly suggested naming it teg()!). But you don't really need it; just call inverse().get().

Google Collections FAQ

Set 接口(interface)上的一个示例:add()remove() 是最小方法,而 addAll( )removeAll() 是为了方便。 addAll() 可以根据 add() 来实现,因此它并没有真正为客户端提供使用 Set 的新功能。但它确实清理了客户端代码。

我考虑过创建一个包含更多便利方法的Utility 类。但是后来我远离了 OOP,我必须在每次调用中都将正在操作的对象作为参数包含在内。虽然我猜这是遵循 Java 的 Collections 类的示例。

最佳答案

只要类有机会(即使现在没有)以比客户端更有效的方式实现该 API,我肯定会提供额外的 API。 (例如,Set.removeAll()。)一般来说,每当它清理客户端代码时,我都会提供额外的 API。

您能否提供一个 Google API 的示例,该 API 不提供看似有用的便利方法以支持让客户端进行多次调用?

关于java - 最小的 API 与便利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987907/

相关文章:

c++ - 具有指向派生对象 : How to tell both of each other's existence? 的指针的基类

java - 如何使用这样的Java接口(interface)?

c# - 具有泛型接口(interface)参数的泛型接口(interface)列表

java - 在 Java 中使用接口(interface)对类进行分组

java - List.of 给出错误 : cannot find symbol error

java - 两个不相关的 jar 的 jar hell

java - 如何制作一个动画圈?

java - 如何在 Tomcat 6 上手动部署 Web 服务?

javascript - Coffeescript 类命名空间方法

java - 创建按名称获取列表的方法