软件设计模式
程序员文章站
2024-02-09 15:53:52
...
软件设计模式
PIMPL模式
不使用PIMPL编写的代码
// file CFoo 头文件
#include "FooInternalData.h"
#include "Header.h"
class CFoo
{
public:
CFoo();
~CFoo();
bool ProcessFile(const CString & csFile);
private:
CFooInternalData m_data;
CHeader m_header;
}
// file CFoo 源文件
#include "foo.h"
CFoo::CFoo()
{
}
CFoo::~CFoo()
{
}
bool CFoo::ProcessFile(const CString & csFile)
{
//do something
return true;
}
// main file
#include "foo.h"
int main()
{
CFoo foo;
foo.ProcessFile("c:\\data.bin");
return 0;
}
使用PIMPL模式编写的代码
// file CFoo 头文件
//here just declare the class PIMPL to compile.
//As I use this class with a pointer, I can use this declaration
class CFoo_pimpl;
class CFoo
{
public:
CFoo();
~CFoo();
bool ProcessFile(const CString & csFile);
private:
std::auto_ptr<CFoo_pimpl> m_pImpl;
}
// file CFoo 源文件
#include "FooInternalData.h"
#include "Header.h"
#include "foo.h"
//here defines PIMPl class, because it is use only in this file
class CFoo_pimpl()
{
public:
CFoo_pimpl()
{
}
~CFoo_pimpl()
{
}
bool ProcessFile(const CString & csFile)
{
//do something
return true;
}
};
CFoo::CFoo()
:m_pImpl(new CFoo_pimpl())
{
}
CFoo::~CFoo()
{
//do not have to delete, std::auto_ptr is very nice
}
bool CFoo::ProcessFile(const CString & csFile)
{
//just call your PIMPL function ;-)
return m_pImpl->ProcessFile(csFile);
}
// main file
#include "foo.h"
int main()
{
CFoo foo;
foo.ProcessFile("c:\\data.bin");
return 0;
}
上一篇: 关于软件构造中的设计模式汇总
下一篇: 软件构造心得体会:设计模式期末总结