简单接口实现规范

发布时间 : 星期三 文章简单接口实现规范更新完毕开始阅读

II、 Extern.h

class CExtern { public: private: }

CIFooHelper

m_IFooHelper;

BOOL CreateIFoo(); void UseIFoo(); void CloseIFoo(); CExtern(); ~CExtern();

第21页 共68页

III、 Extern.cpp

CExtern::CExtern() { }

CExtern::~CExtern() { CloseIFoo(); }

BOOL CExtern::CreateIFoo() { if (!m_IFooHelper.Create()) TRACE(“%s”, m_IFooHelper.GetErrMsg()): else return TRUE; }

void CExtern::UseIFoo() { if (m_IFooHelper.IsValid()) m_IFooHelper->DeleteName(“abc\ }

void CExtern::CloseIFoo() { m_IFooHelper.Close(); }

第22页 共68页

5、 Helper类的优点和缺点 I、

Helper类的优点

? Create()简化了初始化操作 ? 包含和隐藏了接口,非常简洁

II、 Helper类的优点

? 一个Helper类对象实例只能对应一个接口对象实例

? 容易疏忽Create()和IsValid()函数,特别是IsValid()函数,(下面可以参考Factory,由于

直接使用接口指针,所以犯错误的机会相对要小一点)

第23页 共68页

二、 接口的辅助类:Factory类

1、 概念

上面提到的Helper类非常好用,但有其缺陷。

如果我们希望有这样一种helper类,可以管理多个接口对象,甚至还可以管理一个包(例

如:某个dll文件)的多个类型的多个接口对象。(不过,我个人的习惯,宁愿写多个Factory类,这样结构更清晰)

这时,我们就要用到Factory类。

2、 使用Factory类的几个要点

? Factory类不包含接口的指针,由客户(即CExtern)自己管理接口对象

? Factory类只管接口对象的创建,但不管其销毁,即Factory类只有Create()函数,但没

有Close()函数

? 接口对象的销毁,直接调用接口的Release()方法

? 一般情况下,要求Factory的生命期长于接口对象,即销毁Factory对象前,必须先销毁

由其创建的接口对象

? 接口的使用,直接使用接口指针,不通过Factory类

3、 Factory类一般在接口头文件里实现,可以和Helper类在一起

由于Factory类是服务接口编写人编写,同时提供给客户项目编写人,放入客户的工程中。

所以,从简单考虑,最好将Factory类的声明和实现,全部放在接口的头文件里。 这样,只需要提供一个头文件给客户工程即可。

同时,我们可以在接口文件里即包含helper类,也可以包含Factory类。

第24页 共68页

联系合同范文客服:xxxxx#qq.com(#替换为@)