COM-接口的.pptVIP

  • 4
  • 0
  • 约3.63千字
  • 约 7页
  • 2017-08-19 发布于浙江
  • 举报
COM-接口的

* 第二章 接口 接口提供了两个不同对象间的一种连接,计算机程序是通过一组函数连接起来的,这组函数实际上就定义了程序不同部分的接口。 在C++中,可以使用抽象基类来实现COM接口。由于一个COM组件可以支持任意数目的接口,对于这类组件,可以使用抽象基类的多重继承来实现。 2.1 接口的作用 在COM中,接口就是一切。对于 客户来说,一个组件就是一个接口集合。 客户只有通过接口才能和COM组件打交 道。客户不必了解组件的实现细节,甚 至不必知道一个组件所提供的所有的接 口。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 2.1.1 可复用的应用程序框架 单个的组件并不能对整个应用程序产生决定性的影响,相反,用以连接组件的接口将对整个应用程序产生决定性的作用,只要接口不变,那么组件可以随意的替换。如果借口设计的好,可以得到可复用极高的结构。 可复用结构的设计决不是一件简单的事情。它要求设计者具有预测未来的能力。 2.1.2 COM接口的其他优点 接口可以免受外界变化的影响。另外,接口还具有多态性。 2.2 COM接口的实现 例子程序 关键点:1.COM接口在C++中是使用纯抽象基类实现的。 2.一个COM组件可以提供多个接口。 3.一个C++类可以使用多继承来实现一个提供多个接口的组件。 上述例子的缺陷: 1.组件与客户间并没有完全通过接口进行通信。 2.客户程序中使用了new和delete操作,这个操作和语言相关,因此 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 应该避免使用,去寻求一种更好的组件生命周期控制方法。 若干问题: 1.类并非组件,也就是说并非一个C++类只能与一个COM组件相对应。 2.接口并非总是集成来的。对接口的继承只不过是一种实现细节罢了。 3.多重接口与多重继承。组件包含接口、接口包含函数。 命名冲突: 1.不同接口中函数的命名冲突:不是问题,因为COM是二进制标准,真正调用时使用的并不是函数名称。 2.接口名冲突:需要程序员根据一定的准则对接口的命名加以规范化。 2.3 接口理论 2.3.1 接口的不变性 可能是COM接口最具特色的一个性质。一旦公布了一个接口,那么它将永远保持不变。对组件进行升级时,通常不会修改已有的接口,而是加入一些新的接口。 2.3.2 多态性 多态指的是可以按同一种方式处理不同的对象。 多重接口使得多态的重要性更为突出,一个组件应当支持较小的接口,接口越 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 大,接口的特定性越强,这将直接影响到该组件以及使用该组件的客户的可复用性。 可复用整个应用架构的能力并不是随便就能出现的。需要精心的设计接口,以使之能够支持各种不同的实现。这不仅要求接口有较高的通用性,而且客户也应当按照一种比较通用的方式来使用该接口,以避免对接口的实现造成不必要的限制。 2.4 接口的背后(接口的二进制结构) 定义一个纯抽象基类,实质上是定义一个内存块结构。 interface IX { virtual void _stdcall Fx1() = 0; virtual void _stdcall Fx2() = 0; virtual void _stdcall Fx3() = 0; virtual void _stdcall Fx4() = 0; }; Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 2.4.2 vtbl指针及实例数据(成员变量) class CA: public IX { public: virtual void _st

文档评论(0)

1亿VIP精品文档

相关文档