简化编程工作:
1.客户端的简化:什么是智能指针 接口指针类的实现 接口指针的使用 引用计数 赋值 未知接口赋值 带有智能指针客户的实现 C++包装类
2.服务端的简化:未知接口基类 CUnknown实现INondelegatingUnknown DECLEAR_IUNKNOWN实现代理未知接口 GetOuterUnknown(也是自动选择),CUnknown构造函数传递指向外部未知接口的指针作参数(供GetOuterUnknown使用),CUnknown::Init虚函数创建被包容或聚合的组件 CUnknown::FinalRelease在CUnknown::NondelegatinRelease删除某个组件前调用
类基类:必须实现CreateFunction创建组件 必须从CUnknown继承得到 必须填充CFactoryData结构并接入全局数组g_FactoryDataArray(指定哪些组件可以被创建)
CUnknown和CFactory的使用代码
3.集成步骤:
编写组件实现类:从CUNknown或其派生类派生出待实现的组件 用DECLARE_IUNKNOWN宏实现代理未知接口 组件构造函数中初始化CUNknown 实现NondelegatingQueryInterface,加入此组件支持而其他基类不支持的接口 可以重载Init做一些初始化处理 组件删除前可以重载FinalRelease做清理工作 给组件实现以静态CreateInstance 实现组件支持的接口
对同一DLL中的其他组件,重复上面
编写类厂:建立文件,包含全局数组g_FactoryDataArray[CFactoryData] 定义g_FactoryDataArray数组并用DLL中提供的所有组件信息填充 定义变量g_cFactoryDataEntries,g_FactoryDataArray中组件的个数
编一个定义DLL入口点的DEF文件。