zoukankan      html  css  js  c++  java
  • 二阶构造模式

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

    如果在构造函数中使用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
    ", obj);
        delete obj;
        return 0;
    }
  • 相关阅读:
    基于RBAC的权限设计模型
    RBAC用户权限管理数据库设计
    系统多语言实践(二)
    多语言系统的数据库设计
    系统多语言实践(一)
    企业后台模板
    MYSQL
    JS,Jquery
    BootStrap
    KindEditor
  • 原文地址:https://www.cnblogs.com/zsy12138/p/10827396.html
Copyright © 2011-2022 走看看