创建函数 方案1 百接引出创建函数 优点:对于DL菲常方便 方案2 把创建函数封装到一个对象中,通过 vtable调用 优点:灵活,客户以一致的方式调用创建函数
创建函数 !方案1 – 直接引出创建函数 接引出创建函数 – 优点:对于DLL非常方便 !方案2 – 把创建函数封装到一个对象中,通过 创建函数封装到一个对象中,通过vtable调用 – 优点:灵活,客户以一致的方式调用创建函数 的方式调用创建函数
创建函数(续) 创建函数指针 客户 组件 创建函数指针
创建函数(续) 客户 组件 创建函数指针 客户 组件 创建函数指针
创建函数所在的对象 该对象被称为类对象,也称为类厂 冫现在间题是:如何创建类厂对象? 对于DL通过引出函数 对于EXE,EXE的引出函数? 客户)引出函数-)类厂对象-)用户对象 引出函数的名字固定:D| GetClassobject ☆增加了一层间接性,带来灵活性
创建函数所在的对象 创建函数所在的对象 ! 该对象被称为类对象,也 称为类厂 !现在问题是:如何创建类厂对象? 现在问题是:如何创建类厂对象? – 对于DLL通过引出函数 – 对于EXE ,EXE的引出函数? !客户 - 〉引出函数 - 〉类厂对象 - 〉用户对象 !引出函数的名字 引出函数的名字 固定:DllGetClassObject DllGetClassObject !增加了一 层间接性, 带 来 灵活性
创建对象结构示意图 DllGetClassobject 创建类厂对象 客户 创建实例对象
创建对象结构 示 意 图 客户 组件 创建实例对象 DllGetClassObject { } 创建类厂对象
类厂 Class Factory 类厂:用于创建COM对象的COM对象 目标:完成COM对象的创建过程,更好 地把客户与对象隔离开来。 特殊性 实现一个或多个创建接口,缺省的接口 为 IClassFactory 类厂本身没有 CLSID
类厂(Class Factory) Class Factory) !类厂:用于创建 类厂:用于创建COM对象的COM对象 !目标:完成COM对象的创建过程, 对象的创建过程,更好 地把客户与对象隔离开来。 !特殊性: – 实现一个或多个创建接口, 实现一个或多个创建接口,缺省的接口 为IClassFactory IClassFactory – 类厂本身没有CLSID