我最近设计了一个 API 来包装数据存储实现,并允许其他开发人员使用这个 API 来索引他们的数据并根据关键字查询数据。我在查询方法中使用了响应/回复模式,因为 Jaroslav Tulach 提到它可以避免在需要添加参数时不断更改 API 接口(Practical API Design 中的第 97 页)。其他开发人员认为使用方法重载是更好的方法。你能分享你在设计中使用两种不同方法的经验吗?以下是我和其他开发人员之间的对话。
我:响应/回复模式看起来是一种简洁的方式,因为随着 API 的发展,越来越多的参数可以添加到 API 接口中。在接口中拥有超过 10 种以上的重载方法可能会让其他开发人员感到困惑。他们如何确定使用哪种方法?
其他开发者的论点:随着 API 的发展,您不应该继续添加参数。如果您在 API 接口中不断添加参数,则说明您的 API 设计存在问题。结果,重载方法的数量很少,因此不会打扰开发人员。更重要的是,Java框架中经常看到大量的重载方法实现。
我:管理以前版本的 API 的向后兼容性很容易。您不必更改界面。更改界面会破坏其他开发人员的现有代码。
其他开发人员的论点:如果我更改实现并添加参数,其他开发人员应该根据新的 API 更新他们的代码。如果新参数是可选的,为什么还要添加它。