我正在努力理解API到底是什么。
根据我目前的理解,API (Application,应用程序编程接口)是一个由软件实例提供的契约,它保证一组定义的行为,这些行为由一组定义的操作触发。
API是一种“公共”结构,因为它定义了与外界交流的规则。
类似地,简单地说,Java接口也是一个构造,给定的Java类(实现该接口)必须提供,例如提供在该接口中定义的功能(通过编写函数实现)。
两者似乎在做几乎相同的事情,定义了一组行为,如果采取正确的操作(例如调用或调用的格式),这些行为将被触发。
那么,将Java提供的接口(例如集合)或我编写的接口引用为API是正确的吗?
发布于 2018-10-24 12:00:08
“API”是一个非常有弹性的术语,可以描述从一组URL到一个方法签名的任何东西。
当您使用Java接口来描述API时,请注意接口包含了什么:只包含几个方法签名,可能还有一些JavaDoc。签名描述类型检查器的API,但不能描述这种方法的先决条件。这些额外的需求可以在该接口的文档中表达,但它实际上并不是接口本身的一部分。例如,有一些标记接口(如Serializable )是空的,根本不声明任何方法,但是有一些不能在Java类型系统中直接表示的含义。
您不应该使用诸如“这是一个API→让我们使用接口”这样的思想过程来处理接口。相反,接口描述对象向该对象的使用者提供何种方法。一条通向良好接口的路径通常通过一个简短的重构过程:
getBar()
,而在那边,我们的对象需要frobnicate(Something)
。注意,扩展基类既继承了接口/ API,也继承了该API的实现。事实证明,这并不理想,通常更好的做法是使用Java接口进行接口继承和组合以实现重用。
https://softwareengineering.stackexchange.com/questions/380507
复制相似问题