Nic*_*ner 9 java oop api-design interface software-design
我正在尝试设计将在我的应用程序内部使用的接口.以Google为例,我努力减少公共API的混乱.但是,有一些便利方法是根据最小方法定义的.当我在方便和整洁之间寻求平衡时,我应该考虑哪些因素?
Google示例:in HashBiMap
(doc):
为什么BiMap没有getKeyForValue()方法?
我们确实考虑过它(Doug Lea甚至半开玩笑地建议将其命名为teg()!).但你真的不需要它; 只需调用inverse().get().
Set
接口上的一个例子:add()
并且remove()
是最小的方法,addAll()
而且removeAll()
是为了方便.addAll()
可以实现add()
,因此它并没有真正为客户提供使用的新功能Set
.但它确实清理了客户端代码.
我考虑过制作一个Utility
包含更多便利方法的课程.但是后来我离开了OOP,并且我必须在每次调用中包含被操作的对象作为参数.虽然我猜这是Java Collections
类的例子.
只要类有机会(即使现在不能)以比客户端更有效的方式实现该 API,我肯定会提供额外的 API。(例如,Set.removeAll()
。)一般来说,每当它清理客户端代码时,我都会提供额外的 API。
您能否提供一个 Google API 未提供看似有用的便利方法以支持客户端进行多次调用的示例?