【文件属性】:
文件名称:什么是接口-京东应用架构设计
文件大小:7.56MB
文件格式:PDF
更新时间:2021-06-10 11:10:38
Delphi 2010 语法
7.1 什么是接口
接口是一种结构类型,它声明了一组方法和属性,但并未替这些方法和属性实现具体
的定义。
从所起作用来看,接口相当于计算机世界中的契约。现实世界中的契约规定了签订双
方各自必须履行的义务,而接口则规定了所有实现这个接口的对象必须履行的义务,这种
义务并不是用文字列出的若干条款,而是用程序语言声明的一组方法或属性,任何实现这
个接口的对象必须替接口中的所有方法属性进行具体定义(即实现这个接口),就像任何
一个履行合约的人都必须完成合同上所列出的所有条款(履行这份契约)一样。
我们将上面的比喻整理一下:
计算机世界 现实世界
接口 契约
当中声明了若干方法或属性 当中列举了若干条款
接口的使用者必须实现接口 契约的签订者必须履行契约
替接口中的方法或属性进行具体定义,即实
现接口
完成契约中的每项条款,即履行契约
这样进行类比后,很容易发现接口与契约非常的相似。
那么,接口到底有什么用?总不会只是让对象去实现它所声明的方法或属性吧?当然
不是。我们通过下面的例子来感受一下接口的作用。
假设我们现在要为 Word开发一款小插件。这款的插件的功能非常简单:它在工具栏上
添加一个按钮,当我们点击这个按钮时 Word会自动保存当前正在编辑的文档。
要编写这款插件,我们首先需要在工具栏上添加按钮。问题是只有微软自己才知道调
用哪个函数才能在工具栏上添加按钮该,所以问题变成了我们如何才能知道这个函数。很
明显,我们不可能打电话去问微软公司。由于 Word的源代码并不公开,所以也不可能在网
上搜索。
很有可能,微软当初也想过这个问题。证据就是他们找到了解决之道:将这类的函数
全部声明在一个接口中,并将接口暴露给开发者。如此一为,我们就可以调用相应接口的
方法来实现这个功能。
有人可能会奇怪:接口不是没有提供方法的具体实现吗?这样调用方法还有什么用?
我的回答是:接口确实没有提供实现,但微软公司提供给开发者的并不是只有一个接
口,还有一堆编译好的 DLL,而 DLL中是可以储存代码的。当我们调用接口中的方法时,
Word会通过某种方法寻找到 DLL中的代码并执行。
至于为什么不能直接从 DLL中调用函数,而非要经过接口来调用,恐怕要等读者学习
了 COM编程后才会明白。
总而言之,通过接口提供只是众多解决方法的其中之一而不是唯一。就算这样,相信
通过这个例子读者应该还是能感受到接口的作用的。我们再将这个例子用契约来描述一
下:
我们把开发插件当成是开发者与微软公司之间的一种免费交易,为保证交易的顺利进
行,二者签订了一份契约(接口),开发者通过契约要求微软公司实现契约中列举的所有