gpt4 book ai didi

java - 为 OO 语言编写 API 究竟意味着什么?

转载 作者:搜寻专家 更新时间:2023-10-31 20:01:47 24 4
gpt4 key购买 nike

我被要求为我选择的高级 OO 语言编写 API(我将使用 Java)。 API 需要执行特定功能,当然,但它们是我知道我可以完成的非常基本的事情。

我熟悉 Web 应用程序 API 的概念,这很简单,但是为 OO 语言编写 API 到底意味着什么?在 Java 的情况下,这是否意味着编写一个可以导入的包并通过类/函数提供所需的功能,所以我会编写 a) 包和 b) 一个单独的模块来测试它? (为了澄清,除了“写一个 API”和“它需要做 X、Y 和 Z”之外,我没有得到任何信息。进一步澄清:我提到 Web 应用程序 API 概念只是为了表明我知道什么是 API是。这不是任何类型的 Web API。)

最佳答案

根据上下文和你问的人,有不同的定义。

有些人将模块公开的所有公共(public)类型称为 API。根据这个非常广泛的定义,几乎每个库或包都有一个 API。我认为这是一个很普遍的定义,但并不是每个人都同意。

在更抽象的层面上,API 是一种定义某些功能的契约(Contract)或规范。 API 更像是一个定义良好的模块或服务接口(interface),用于将公共(public)可用功能与其内部实现分开。这种 API 的一个很好的例子是 Java EE API。

实际上,在 Java 中,API 通常主要由接口(interface)类型组成。功能由接口(interface)的方法和文档定义。 API 本身不需要有任何功能(尽管它可以有一些基本的默认类或帮助类)。

由另一个类来实现接口(interface)并提供已定义功能的实现。这些实现不应违反文档中定义的契约(Contract)。

如果某个应用程序想要使用 API,它只会访问接口(interface),而不会访问实现类。这就是“针对接口(interface)而非实现编程”的原则。在我看来,这是 API 最重要的方面,也是 API 与常规接口(interface)的区别所在。它使 API 可重用,并允许在不破坏 API 的情况下更改内部实现。

当然,要实际使用 API,必须有某种机制来获取实现该 API 的类的实例。通常是某种工厂方法或依赖注入(inject)。

封装通常取决于 API 的用途。第一个定义所定义的 API 通常包含在其库的 jar 中,因为单独导入它们没有意义。如果一个 API 有多个实现,那么 API 应该与实现分开打包。

关于java - 为 OO 语言编写 API 究竟意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28951567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com