COM不支持实现继承的原因在于这种继承方式将使得一个对象的实现同另外一个对象的实现紧紧地关联起来。在这种情况下,当基类的实现被修改后,派生类将无法正常运行而必须被修改。这就是为什么一些用C++编写大型程序的专家们强烈建议人们基于抽象类来构建应用程序。
因此,为了保证以组件的修改不会影响应用程序的正常运行,COM并不支持实现继承。我们可以用组件包容来完全模拟实现继承。
包容和聚合
对一个组件加以扩展或改造以使符合自己的使用需要,并可能会希望用此改造后的组件来代替原有的组件。
在C++中,对类的改造是用包容和继承来实现的。在COM中,则可使用包容和聚合来对组件进行改造。
包容和聚合实际上是使用一个组件实现别外一个组件的一种技术。在包容的情况下,外部组件将包含内部组件,而在聚合的情况下,则称外部组件聚合内部组件。
包容的简介
包容是在接口级别完成的。外部组件包含指向内部组件接口的指针。此时外部组件只是内部组件的一个客户,它将使用内部组件的接口来实现它自己的接口,见图8-1
外部组件也可以通过将调用转发给内部组件的方法重新实现内部组件所支持的某个接口。并且外部组件还可以在内部组件代码的前后加一些代码以对接口进行改造,见图8-2
包容的实现
聚合简介
聚合是包容的一个特例。外部组件将直接把内部组件的接口指针返回给客户。使用此种方法,外部组件将无需重新实现并转发接口中的所有函数。见图8-3。但这样外部组件无法对接口中的函数进行任何改造。当外部组件将内部组件的接口指针返回给客户之后,客户就可以直接同内部组件打交道了。(但是客户不应该知道它是在同两个不同的组件交互,否则将无法满足封装的要求。)
聚合的实现
假定客户向外部组件请求接口IY。此时外部组件可以不实现IY接口,而只需将内部组件请求查询此IY接口。指针返回给客户。客户可以直接使用此指针来调用内部组件所实现的那些IY成员。此时就IY接口而言,外部组件相当于是被架空了;它放弃了对IY接口的控制,而将此控制交给了内部组件。
分享到:
相关推荐
本文将深入探讨在进程内COM组件的两种复用方式:包容(Aggregation)和聚合(Containment)。 1. 包容(Aggregation) 包容是一种特殊形式的COM组件关系,其中一个COM对象包含另一个COM对象,作为其内部成员。在...
标题“Windows COM组件包容、聚合实例”主要涉及的是COM组件的两个关键概念:包容(Containment)和聚合(Aggregation)。这两个概念都是COM组件间交互的重要方式。 1. **包容(Containment)**: 包容是指一个COM...
com 聚合
在COM中,有两大重用模型:包容和聚合。这两种模型都是为了提高代码复用,减少重复工作,从而提高开发效率和系统性能。 1. 包容:包容是一种包含关系,其中一个COM组件(例如对象BB)包含并使用另一个已存在的组件...
书中可能探讨了COM的核心概念,包括接口(Interface)、类工厂(Class Factory)、引用计数(Reference Counting)、包容与聚合(Aggregation and Composition)、以及COM对象的生命周期管理。接口在COM中扮演了至关...
第8章 组件复用:包容与聚合 125 8.1 包容和聚合 126 8.1.1 包容简介 126 8.1.2 聚合简介 127 8.1.3 包容与聚合的比较 127 8.2 包容的实现 128 8.2.1 接口扩展 131 8.3 聚合的实现 132 8.3.1 QueryInterface...
首先,复习COM包容和聚合模型。在COM中,包容允许一个对象包含另一个对象,而聚合则是一种特殊的包容形式,其中内部对象的`IUnknown`接口通过外部对象暴露。在非聚合模式下,每个对象有自己的`IUnknown`接口;而在...
3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章 COM扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可...
COM技术内幕一书的源代码,该书全面系统的介绍COM技术的著作,主要介绍了组建,接口,QueryInterface函数,引用计数,动态链接,HRESULT、GUID、注册表及其他细节,类厂,组建复用:包容与聚合,编程工作简化,EXE中...
COM的可重用性体现在包容和聚合,允许组件嵌入到其他组件中或者多个组件共享同一组件功能。 COM库的实现涉及到组件注册、类工厂(Class Factory)、DllGetObjectClass函数、CoGetClassObject函数、CoCreateInstance...
首先,让我们复习一下COM的包容和聚合模型。包容模型是指一个COM对象可以包含另一个COM对象,使得它们看起来像是单一的对象。在非聚合模式下,客户程序通过`QueryInterface`、`AddRef`和`Release`来访问接口。而在...
【第10章 开发ADO数据库组件】 在本章中,我们将探讨如何开发使用ActiveX Data Objects (ADO)的...通过合理利用包容和聚合,我们可以构建出高效且灵活的数据访问组件,使得应用程序能够轻松地与各种数据源进行通信。
第一章 组件 第二章 接口 第三章 QueryInterface函数 ...第八章 组件复用:包容与聚合 第九章 编程工作的简化 第十章 EXE中的服务器 第十一章 调度接口与自动化 第十二章 多线程 第十三章 一个完整的例子 结语
在实验中,你可以深入理解COM的包容聚合,即一个组件可以包含其他组件,形成更复杂的组件结构。 EJB是Java平台上的企业级应用组件模型,主要用于构建可部署在服务器端的业务逻辑。EJB组件分为三种类型:会话bean...
《COM技术内幕》作为一本权威的介绍COM技术的书籍,其内容涵盖了COM的基本概念、架构、接口定义、类工厂、注册机制、包容和聚合模型等关键部分。它不仅为初学者提供了入门知识,也向经验丰富的开发者深入介绍了COM的...
课程目标是使学员能深入理解组件及其相关概念,如IUnknown和IDispatch接口,以及它们与组件的关系,同时掌握组件的生命周期管理和重用策略,如包容和聚合。此外,学员还将学习如何应对分布式环境中的通信问题,如...
此外,COM还支持组件的可重用性,通过包容和聚合机制,一个组件可以包含或使用其他组件,增强了代码复用性。 接口描述语言(IDL)是定义COM接口的关键工具,它允许开发者描述接口的方法和属性。MIDL工具会将IDL文件...