包容与聚合是COM用以实现组件复用的技术或者说是一种机制,它们类似于继承。
当一个组件(外部组件)包容另一个组件(内部组件)时,外部组件包含一个内部组件接口的指针,并重新实现此接口供其客户调用。在重新实现的这个接口中,外部组件只是简单的将调用请求转发给内部组件。包容的实现比较简单,本文重点介绍聚合。
当外部组件聚合内部组件时,外部组件没有重新实现内部组件的接口和进行调用转发,而是把内部组件接口的指针直接返回给客户,从而使客户能够直接与内部组件打交道。但是,必须保证客户不能访问内部组件的IUnknown接口,不能也没有必要让客户知道它正在与另一个组件--即所谓的内部组件交互,否则一切将变得十分混乱。……
附作者来信:
闻怡洋,你好!
贵网站办得很好,现奉上近作一篇及其示例程序和代码,以示支持。
因开发任务过重,这篇文章断断续续写了半年才成这个样子,谬误之处还望斧正!示例程序只做原理之说明,并无多大实用性。以后我会用MFC和ATL分别做一个实用的通信组件,既说明实现技术,又有一定参考使用价值。
惟有大家共同的提高,才是真正的提高。
致
礼!