COM组件的接口管理与复用技术解析
在软件开发中,对象往往需要支持大量的接口。然而,在某些场景下,部分接口的使用频率极低,或者只是临时使用。为了降低这些不常用接口带来的开销,开发者可以采用一种名为“Tear - Off”的技术。
Tear - Off接口
当对象支持众多接口时,对于那些很少使用的接口(例如为了向后兼容而存在的接口),开发者可以不在对象实现中直接支持它们。而是在接收到对这类接口的请求时(例如通过 QueryInterface ),动态构建并返回该接口的虚表(vtbl)。当对该接口的最后一次 Release 调用发生时,这个虚表会被销毁。
这种技术被称为“Tear - Off”,因为新的接口是按需“撕下”的,即动态构建和销毁。需要注意的是,这种技术可能会使相同的 QueryInterface 请求返回不同的物理结果,但只要“Tear - Off”接口遵循 IUnknown 的所有规则(如对象标识、对称性等),就不会破坏组件模型。不过,如果接口需要进行封送处理(例如跨进程边界),这种技术就会失效。
组件复用
在实际开发中,常常会遇到需要复用第三方组件的情况。以TV - VCR示例来说,原本VCR组件支持 IVideo 和 ISVideo 接口。后来,电子制造商联盟发布了一个新的接口 IComponentVideo ,它能提供更优质的画面质量。
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



