• COM原理笔记之二——COM对象与接口


     

    COM原理笔记之二——COM对象与接口

     

    一、             COM对象与C++对象的比较:

    1、   封装性:

    COM对象的数据成员的封装以组件模块为最终边界,对于对象用户完全是透明的。客户只能通过接口成员函数访问对象的属性。

    虽然《COM原理》指出C++对象的封装特性只是语义上的封装,对于对象用户是可见的。但是从封装性必须满足以下条件(有一个清晰的边界,有确定的接口,受保护的内部实现)来考虑,我个人认为两者之间并没有太多的区别,只是表现形式上的不同而已。

    2、   可重用性:

    COM对象的可重用必表现在COM对象的包容与聚合,一个对象可以完全使用另一个对象的所有功能;

    C++对象的可重用性主要体现在继承性机制上,继承性机制使得C++子类不仅可以重用其父类的数据结构与程序代码,而且可在父类代码的基础方便地上进行修改与扩充,同时并不影响其对原有类的使用。

    3、   多态性:

    COM对象的多态性通过其所具有的接口才能体现出来。

    C++对象通过虚函数与重载来体现。

    二、             COM接口具有的一些特性:

    1、   二进制特性:

    接口规范并不建立在任何编程语言的基础上,而是规定了二进制一级的标准。任何语言只要有足够的数据表达能力,就可以对接口进行描述,从而可以用于与组件程序有关的应用开发。

    2、   接口不变性:

    接口是组件客户程序和组件对象之间的桥梁,接口如果经常发生变化,则客户程序和组件程序也要跟着变化,这对应用系统的开发非常不利,也不符合组件化程序设计的思想。

    3、   继承性(扩展性)

    根据COM规范,所有接口都必须从IUnknown派生,可以是直接派生,也可以是间接派生。COM不提倡接口继承,同时接口与接口之间的继承也只能是单继承。

    4、   多态性:

    运行过程中的多态性。前面说COM对象的多态性通过COM接口来体现,我们常常可以注意到多个不同的COM对象实现了同一个接口,客户程序通过代码便可以调用COM对象。

    三、             COM对象的接口原则:

    1、    对于同一个对象的不同接口指针,查询得到的Iunknow接口必须完全相同。

    2、    接口对称性:对一个接口查询其自身总应该成功。

    3、    接口自反性:如果从一个接口指针查询到另一个接口指针,则从第二个接口指针再回到第一个接口指针必定成功。

    4、    接口传递性:如果从第一个接口指针查询到第二个接口指针,从第二个接口指针可以查询到第三个接口指针,则从第一个接口指针一定可以查询到第三个接口指针。

    5、    接口查询时间无关性:如果在某一个时刻可以查询到某一个接口指针,则以后任何时候查询同样的接口指针,一定可以查询成功。

  • 相关阅读:
    学习:组件生命周期(2)
    学习:组件生命周期(3)
    学习:深入分析布局文件(HelloWorld)
    wap webapp app区别
    TCP的数据传输
    SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 详解
    未能加载文件或程序集“SqlServerDal”或它的某一个依赖项。系统找不到指定的文件。
    人生的十个不要等
    asp.net网站三层架构详解和反射知识
    工厂模式概况
  • 原文地址:https://www.cnblogs.com/3echo/p/434499.html
Copyright © 2020-2023  润新知