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