首页 > 其他 > 详细

二阶构造模式

时间:2019-05-07 19:27:45      阅读:120      评论:0      收藏:0      [点我收藏+]

构造函数只决定对象的初始化状态,不可以决定对象是否创建。

 

如果在构造函数中使用return,则将构造出一个半成品对象。

半成品对象:

      构造函数没有全部执行。

 

二阶构造:

    分两步来构造一个对象。

    第一步: 与系统资源无关的初始化操作。(不会出现异常操作的)

    第二步: 与系统资源相关的初始化操作。(可能会出现异常操作的。如:申请内存,访问文件)

#include <stdio.h>

class TwoPhaseCons 
{
private:
    TwoPhaseCons() // 第一阶段构造函数
    {   
    }
    bool construct() // 第二阶段构造函数
    { 
        return true; 
    }
public:
    static TwoPhaseCons* NewInstance(); // 对象创建函数
};

TwoPhaseCons* TwoPhaseCons::NewInstance() 
{
    TwoPhaseCons* ret = new TwoPhaseCons();   // 此处调用第一阶段的构造函数 
    if( !(ret && ret->construct()) )          // 此处调用第二阶段的构造函数
    {
        delete ret;
        ret = NULL;
    }        
    return ret;
}

int main()
{
    TwoPhaseCons* obj = TwoPhaseCons::NewInstance();  // 通过类定义的构造函数来构造    
    printf("obj = %p\n", obj);
    delete obj;
    return 0;
}

 

二阶构造模式

原文:https://www.cnblogs.com/zsy12138/p/10827396.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!