客户端:使用智能指针和包装类
1。智能指针:简单说就是创建一个类,叫智能指针类,它封装了AddRef() 和 ReleaseRef().对使用这个类的人不用关心计数问题。具体做法:重载->操作符,把此调用转发给内部的接口指针去做。(聚合)
2。包装类:可以包含很多个接口,而且要实现所有接口。(包容)
服务器端(组件):
1。CUnkown类:做一个基类,让基类实现AddRef() 和 Release(), 这样继承它的组建就不用关系计数问题了。
组件继承后,要重载几个函数:
NondelegateQueryInterface(): 因为基类Cunkonwn不知道组建有什么接口,至于为什么是NondelegateQueryInterface,去看我的COM聚合那个Thread
Init() 创建内部组建用的,一样,基类可不知道你有什么内部组建
FinalRelease(), 释放内部组建。 。。。。。。。。。。。。。。。
2。 CFactory: IClassFactory
包含了一个FactoryData的数据结构的成员:可以调用组建里边定义的CreateInstance(),还提供一些组建信息。