我被要求为我选择的高级OO语言编写API(我将使用Java).当然,API需要执行特定的功能,但它们是我知道我可以完成的非常基本的事情.
我熟悉Web应用程序的API概念,这很简单,但是为OO语言编写API究竟意味着什么?在Java的情况下,这是否意味着编写一个可以导入的包并通过类/函数提供所需的功能,所以我会写a)包和b)一个单独的模块来测试它?(为了澄清,除了"编写API"和"它需要做X,Y和Z"之外,我没有提供任何信息.进一步澄清:我提到了Web应用程序API概念,只是为了表明我知道什么是API是.这不是任何类型的Web API.)
根据上下文和您询问的对象,有不同的定义。
有些人将模块公开的所有公共类型称为 API。通过这个非常广泛的定义,几乎每个库或包都有一个 API。我认为这是一个非常普遍的定义,但并非所有人都同意。
在更抽象的层面上,API 是一种定义某些功能的契约或规范。API 更像是一个定义良好的模块或服务接口,用于将公共可用功能与其内部实现分开。这种 API 的一个很好的例子是 Java EE API。
实际上,在 Java 中,API 通常主要由接口类型组成。功能由接口的方法和文档定义。API 本身不需要任何功能(尽管它可以有一些基本的默认类或辅助类)。
由另一个类来实现接口并提供已定义功能的实现。这些实现不应违反文档中定义的合同。
如果某个应用程序想要使用 API,它只会访问接口,而不会访问实现类。这就是“编程接口,而不是实现”的原则。在我看来,这是 API 最重要的方面,也是 API 与常规接口的区别。它使 API 可重用,并使内部实现能够在不破坏 API 的情况下进行更改。
当然,要实际使用 API,必须有某种机制来获取实现 API 的类的实例。通常它是某种工厂方法或依赖注入。
打包通常取决于 API 的使用。由第一个定义定义的 API 通常包含在其库的 jar 中,因为单独导入它们没有意义。如果一个 API 有多个实现,那么 API 应该与实现分开打包。
是的,您只需要编写实现所需功能所需的类即可。确保其他程序员可以使用您的代码访问所请求的任何功能。(他们需要使用的方法应该是public例如)。
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |