没有合适的资源?快使用搜索试试~ 我知道了~
Delphi接口的底层实现
需积分: 9 6 下载量 129 浏览量
2011-10-22
10:33:35
上传
评论
收藏 67KB DOC 举报
温馨提示
试读
9页
Delphi接口的底层实现 Delphi接口的底层实现Delphi接口的底层实现
资源推荐
资源详情
资源评论
Delphi 接口的底层实现
引言
接口是面向对象程序语言中一个很重要的元素,它被描述为一组服务的集
合,对于客户端来说,我们关心的只是提供的服务,而不必关心服务是如何实
现的;对于服务端的类来说,如果它想实现某种服务,实现与该服务相关的接
口即可,它也不必与使用服务的客户端进行过多的交互。这种良好的设计方式
已经受到很广泛的应用。
早在 Delphi 3 的时候就引入了接口的概念,当时完全是因为 COM 的出
现而诞生的,但经过这么多版本的进化,Delphi 的接口已经成为 Object
Pascal 语言的一部分,我们完全可以用接口来完成我们的设计,而不用考虑
与 COM 相关的东西。
那么接口在 Delphi 中是如何实现的呢,很多人想得很复杂,其实它的本
质不过也是一些简单的数据结构和调用规则。笔者假设读者已经有接口的使用
经验,本文试图向你展示接口在 Delphi 中的实现过程,使你在使用接口的时
候,知其然而知其所以然。
接口在内存中的分布
接口在概念上并不是一个实体,它需要与实现接口的类关联,如果脱离了
这些类,接口就变得没有意义了。但接口在内存中仍然有其布局,它依附在对
象的内存空间中。
Delphi 对象本质上是一个指向特定内存空间的指针,这块内存的前四个
字节是一个指针指向类的 VMT 表,接下来排布对象的数据成员,如果对象实现
了接口,则在后面又排着一系列指针,我们可以认为这些指针就是对应的接口,
每个指针就指向一个接口方法表。我们来看一下简单的例子:
type
ITest1=interface
['{5347BB0D-89B7-4674-A991-5C527BE6F8A8}']
procedureSayHello1;
end;
ITest2=interface
['{567B86BB-711D-40C2-8E5E-364B742C2FF1}']
procedureSayHello2;
end;
TTest=class(TInterfacedObject,ITest1,ITest2)
public
procedureSayHello1;
procedureSayHello2;
end;
......
implementation
{TTest}
资源评论
cy02013
- 粉丝: 0
- 资源: 51
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功