避免半成品对象:初始化操作不能按预期完成而得到对象
工程开发中的构造过程可分为
- 资源无关的初始化操作
- 使用系统资源的操作(内存申请,访问文件)
class TwoPhaseCons
{
private:
TwoPhaseCons()
{
//第一阶段构造
}
bool Construct()
{
bool ret =true;
//第二阶段构造
return ret;
}
public:
static TwoPhaseCons* NewInstance();
}
TwoPhaseCons* TwoPhaseCons::NewInstance()
{
TwoPhaseCons* ret = new TwoPhaseCons();
if(!(ret && ret->Construct()))
{
delete ret;
ret = NULL;
}
return ret;
}