档案a.hpp:
class a;
typedef boost::shared_ptr<a> aPtr
class a{
public:
static aPtr CreateImp();
virtual void Foo() = 0 ;
....
};
Run Code Online (Sandbox Code Playgroud)
档案aImp.hpp:
class aImp : public a{
virtual void Foo();
};
Run Code Online (Sandbox Code Playgroud)
档案aImp.cpp:
aPtr a::CreateImp()
{
return aPtr(new aImp());
}
void aImp::Foo(){}
Run Code Online (Sandbox Code Playgroud)
客户端必须使用CreateImp获取指针a,而不能使用a其他方式.您对此实施有何看法?您如何看待这种实施?
如果是Factory Method设计模式,这看起来像是正常的实现.boost::shared_ptr在内存管理和异常安全方面,使用这个API的程序员的生命更容易回归,并且可以防止调用函数和忽略返回值等简单错误.
如果这是基类的唯一实现,则可能是作者的目标是使用pimpl习惯来隐藏实现细节和/或减少编译时依赖性.
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |