Welcome

首页 / 软件开发 / VC.NET / COM组件设计与应用(八)——实现多接口

COM组件设计与应用(八)——实现多接口2009-12-24杨老师一、前言

从第五回开始到第七回,咱们用 ATL 写了一个简单的 COM 组件,之所以说简单,是因为在组件中,只实现了一个自定义(custom)的接口 IFun。当然如果想偷懒的话,我们可以把 200 个函数都加到这一个接口中, 果真如此的话,恐怕就没有人喜欢使用我们这个组件了。一个组件既然可以提供多个接口,那么我们在设计的时候,就应该按照函数的功能进行分类,把不同功能分类的函数用多个接口表现出来。这样可以有如下的一些好处:

1、一个接口中的函数个数有限、功能集中,使用者容易学习、记忆和调用。一个接口到底提供多少个函数合适那?答案是:如果你是黑猩猩,那么一个接口最多3个函数,如果你是人,那么一个接口最好不要超过7个函数。(注1)

2、容易维护。至少你肉眼搜索的时候也方便一些呀。

3、容易升级。当我们给组件增加函数的时候,不要修改已经发表的接口,而是提供一个新的接口来完成功能扩展。(注2)

本回书着落在------如何实现一个组件,多个接口。

二、接口结构

图一、组件A有2个自定义接口,组件B是A的升级

某日,我们设计了组件A,它有2个自定义(custom)接口。IMathe 有函数Add()完成整数加法,IStr 有函数Cat()完成字符串连接。忽一日,我们升级组件A到B,欲增加一个函数 Mul() 完成整数的乘法。注意,由于我们已经发表了组件A,因此我们不能把这个函数安排到老接口 IMathe 中了。解决方法是再定义一个新接口 IMathe2,在新接口中增加 Mul() 函数并依旧保留 Add() 函数。这样,老用户不知道新接口 IMathe2 的存在,他仍然使用旧接口 IMathe;而新用户则可以抛弃 IMathe,直接使用 IMathe2 的新接口功能。看,多平顺的升级方式呀!