`
mengdejun
  • 浏览: 400388 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

COM 包容与聚合

    博客分类:
  • Com
阅读更多

COM不支持实现继承的原因在于这种继承方式将使得一个对象的实现同另外一个对象的实现紧紧地关联起来。在这种情况下,当基类的实现被修改后,派生类将无法正常运行而必须被修改。这就是为什么一些用C++编写大型程序的专家们强烈建议人们基于抽象类来构建应用程序。

因此,为了保证以组件的修改不会影响应用程序的正常运行,COM并不支持实现继承。我们可以用组件包容来完全模拟实现继承

 

包容和聚合

  对一个组件加以扩展或改造以使符合自己的使用需要,并可能会希望用此改造后的组件来代替原有的组件。

   在C++中,对类的改造是用包容和继承来实现的。在COM中,则可使用包容和聚合来对组件进行改造。

   包容和聚合实际上是使用一个组件实现别外一个组件的一种技术。在包容的情况下,外部组件将包含内部组件,而在聚合的情况下,则称外部组件聚合内部组件

 

包容的简介

包容是在接口级别完成的。外部组件包含指向内部组件接口的指针。此时外部组件只是内部组件的一个客户,它将使用内部组件的接口来实现它自己的接口,见图8-1

 

   外部组件也可以通过将调用转发给内部组件的方法重新实现内部组件所支持的某个接口。并且外部组件还可以在内部组件代码的前后加一些代码以对接口进行改造,见图8-2

 

包容的实现

 

聚合简介

   聚合是包容的一个特例。外部组件将直接把内部组件的接口指针返回给客户。使用此种方法,外部组件将无需重新实现并转发接口中的所有函数。见图8-3但这样外部组件无法对接口中的函数进行任何改造。当外部组件将内部组件的接口指针返回给客户之后,客户就可以直接同内部组件打交道了。(但是客户不应该知道它是在同两个不同的组件交互,否则将无法满足封装的要求。)

聚合的实现

假定客户向外部组件请求接口IY。此时外部组件可以不实现IY接口,而只需将内部组件请求查询此IY接口。指针返回给客户。客户可以直接使用此指针来调用内部组件所实现的那些IY成员。此时就IY接口而言,外部组件相当于是被架空了;它放弃了对IY接口的控制,而将此控制交给了内部组件。

分享到:
评论

相关推荐

    windows com 组件 包容、聚合实例

    windows com 组件 包容、聚合实例

    【Win32】进程内COM的两种复用方式(包容和聚合)

    进程内COM组件的两种复用方式,包容和聚合,压缩包内有两个工程与之对应。采用Win32 API,VC8,非ATL或MFC实现。

    Com聚合包容.doc

    com 聚合

    delphi的com机制

    ⊙ 第一章 概述 ... 可重用性:包容和聚合 进程透明性 (待学) 安全性 (待学) 多线程特性 (待学) ⊙ 第五章 用 Visual C++ 开发 COM 应用 Win32 SDK 提供的一些头文件的说明 与 COM 接口有关的一些宏

    中间件实验报告和源码COM+corba+EJB+RMI

    这是中间件的课程的 相关报告和源码 主要是COM的 包容聚合 动态链接库 rmi 等 是学习中间件的好资料

    支持下的组件复用技术 (2005年)

    COM组件复用通过包容和聚合来实现:包容时,外部组件包含内部组件的接口;聚合时,外部组件直接向外公开内部组件的接口.在利用 ATL函数由外部组件创建内部组件时,包容返回的是内部组件自定义接口指针;聚合返回的是内部...

    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技术内幕一书的源代码,该书全面系统的介绍COM技术的著作,主要介绍了组建,接口,QueryInterface函数,引用计数,动态链接,HRESULT、GUID、注册表及其他细节,类厂,组建复用:包容与聚合,编程工作简化,EXE中...

    Visual C++实践与提高-COM和COM+篇『PDF』

    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 实现可...

    windows下COM技术内幕

    第一章 组件 第二章 接口 第三章 QueryInterface函数 ...第八章 组件复用:包容与聚合 第九章 编程工作的简化 第十章 EXE中的服务器 第十一章 调度接口与自动化 第十二章 多线程 第十三章 一个完整的例子 结语

    深入解析ATL(第2版).pdf

    6.5 聚合:外部控制对象 6.6 接口映射表链 6.7 尽管说“不” 6.8 调试 6.9 扩展性 6.10 总结 第7章 ATL中的永久性 7.1 回顾COM的永久性 7.2 ATL的永久性实现类 7.3 属性映射表 7.4 永久性实现 7.5 其他永久性实现 ...

    精通MFC (光盘) 源代码

    15.4.4 实现包容组件 15.4.5 编译、注册COM组件 15.4.6 创建一个对话框应用 15.5 双重接口 15.5.1 调度表 15.5.2 COleDispatchImpl 15.5.3 m_xDispatch成员 15.5.4 输出IDispatch接口 15.5.5 双重接口的...

Global site tag (gtag.js) - Google Analytics