接触VC之四:COM组件模型基础
2006-07-19 11:36:48 来源:WEB开发网嗯,动态链接库的情况就基本如此了。具体动态链接库的编写会和COM组件的编写一块在后续章节里谈及。
二、面向对象的组件模型-COM
Windows系统霸主地位诂计三四年内是不会被动摇的。因此,有n多Windows开发平台出现在我们面前。n多种开发语言是百花齐放啊。于是,我们像圣经里说的那样,操着不同的语言,彼此无法沟通。为改变这一现实,可爱的比尔就站出来了,”偶要改变世界!”。微软公司制定一个基于二进制通用接口规范-Component Object Model(组件对象模型)。但是,一开始COM的解决目标并非是为了通用接口,而是应用于复合文档(OLE)的实现。而今由于语言无关性、进程透明性、可重用性、保密性(除非高手高手高高手,有谁能从汇编码中看出实现技术来)、而且编写并不困难,所以发展成为了一项应用广泛的技术。
1) 组件对象与接口
组件对象、接口是COM的根基。
下面,请允许我用C++对象做一个类比。
组件对象与C++对象的意义是基本相同的。它是一个功能、属性与逻辑的整体。它是一个实体对象,通过对它的接口操作,可以使用它所提供的功能。
接口相当于C++对象中的public成员。它被暴露给外部使用者,使用者只被允许调用这些被暴露在外面的接口来使用对象的功能。与public成员有所不同的是,接口不是一个变量也不是一个函数,而应该是一组函数。在逻辑上,这个组函数应该是功能相关的。一个组件对象可以拥有许多个接口。
我只知道C++的COM实现方法,至于Dephi我就一无所知。
C++实现方法是:由C++类对象来完成组件对象的实现,由C++纯虚类来代表接口。C++类对象通过多重继承多个接口,来的拥有多个接口。
下面,我举一个例子,来说明C++中的组件对象与接口的关系(下面的例子并不是一个COM实现,只是用来表示组件对象与接口的关系)
更多精彩
赞助商链接