在C++中,抽象类和虚函数意味着程序可以调用或访问类而不用知道其具体实现,这种机制允许实现在接口定义之后进行。这种实现称之为插件。Symbian OS中的ECOM就是一个通用的插件框架,提供了一个简单的机制,用以注册、查询接口实现,选择使用合适的实现,提供插件版本控制等。介绍ECOM如何完成这些工作前我们先来看一下插件系统的本质。
一个客户程序希望访问一个对象来进行一些处理,这个对象的具体实现直到运行之前是不知道的,我们只知道处理的一般特性和接口的定义,并且这些处理在相同的接口下有不同的变化。这样的系统有四种清晰定义的角色,即请求服务的客户程序、如何请求服务的接口定义、提供处理请求的接口实现以及提供客户程序访问具体实现(实例化)的框架。如下图所示:
图1 插件关系图
实例化是这样的系统的核心,它负责提供识别出来的服务,运行时加载正确的接口实现。Ecom就是这样的一个框架,我们接下来分别从接口客户端、接口实现及接口定义这几方面来了解Ecom。
接口客户端
插件框架的客户程序使用框架提供的C++接口来实现Ecom,除了以下的步骤并不需要额外的步骤:
- 链接Ecom框架的库文件ecom.lib
- Include接口定义文件