什么情况下避免使用什么情况下避免使用API??
什么是API
API(Application Programming Interface)提供了对某个问题的抽象,以及客户与解决该问题的软件组件之间进行交
互的方式。组件本身通常以软件类库形式分发,它们可以在多个应用程序中使用。概括地说,API定义了一些可复用的
模块,使得各个模块化功能块可以嵌入到终端用户的应用程序中去。
你可以为自己、你所在机构中的其他工程师或大型开发社区编写API。它可以小到只包 含一个单独的函数,也可以大
到包含数以百计的类、方法、全局函数、数据类型、枚举类型和常量等。它的实现可以是私有的,也可以是开源的。
有关API的一个重要的基本定义是:API是一个明确定义的接口,可以为其他软件提供特定服务。
现代应用程序通常都是基于很多API建立起来的,而这些API往往又依赖于其他API。如图1-1中示例应用程序所示,该
应用程序用到了3个类库(1、2、3)的API,而这3个API中有2个又用到了另两个类库(4和5)。举例来说,浏览图片
的应用程序可能会用到加载GIF图片的API,而该API本身则可能又依赖更底层的压缩或解压缩数据的API。
图字翻译:
Application Code:应用程序代码
Library:类库
图1-1 从层次化API中调用例程的应用程序。每个方框代表一个软件类库,灰色部分表示其公共接口,对于类库而言即
是其API,白色部分表示隐藏在API后面的具体实现。
API开发在现代软件开发中随处可见,其目的是为某个组件的功能提供一个逻辑接口,同时隐藏该模块内部的实现细
节。举例来说,我们用来读取GIF图片的API可能仅仅提供一个LoadImage()方法,后者接收一个文件名作为参数,并
返回一个2维的像素数组。所有文件格式和数据压缩的细节全部隐藏在这个看似简单的接口之下。这个概念也在图1-1
中进行了说明,即客户端代码只能够通过该API的公有接口访问。API公有接口如图1-1中每个方框顶部的灰色区域所
示。
为什么选用C++来描述API设计
虽然有很多通用API设计方法学(可适用于任何编程语言或编程环境)可以讲,但最终都需要使用一门特定的编程语言
来表述。因此了解特定语言的特征以促进规范的API设计是非常必要的。所以,本书专门使用一种语言(C++)描述
API设计的问题,而非分散内容使其适用于所有语言。然而,想要使用其他语言(如Java或C#)开发API的读者仍然可
以从本书中获得许多通用的深刻见解。本书的直接目标读者是编写并维护API的C++工程师,他们的API要供给其他工
程师使用。
目前,C++仍是大型软件项目中使用最广泛的编程语言之一,并且日渐成为注重代码性能项目的首选语言,因此,你
可以在自己应用中选用的C和C++的API种类非常多(前面我已经列出一些)。本书重点关注如何使用C++编写优秀
API,并引入了丰富的源代码示例以更好地阐述这些概念。也就是说,本书会涉及一些C++特有的主题,例如模板、封