为什么使用类厂对象创建COM对象

来源:互联网 发布:路由器mac地址克隆 编辑:程序博客网 时间:2024/04/28 12:49

  近日阅读《COM技术内幕》第7章,第107页指出CoCreateInstance创建COM对象很不灵活,没有给客户提供一种控制组件创建过程的方法。实际上,这种说法是不准确的,我认为真正的意思是这样的,CoCreateInstance是操作系统COM库提供的函数,该函数会调用组件所在DLL(或者EXE)中的导出函数来创建对象,因此对每个组件而言,CoCreateInstance创建他们的过程是一样的,但是在有些情况下组件可能希望能够以不同的方式进行初始化,正如一个C++类可以提供几个不同的构造函数。

 为了解决这个问题,COM规范引入了一个中间层,即类厂,CoCreateInstance创建类厂,再由类厂来创建对象的组件,每个类厂对应一个创建过程,类厂也由组件的实现者实现。

 在设计模式中,增加灵活性往往要增加设计的层次,从这一点说,引入类厂也是情理之中的事情。

0 0
原创粉丝点击