二阶构造模式
Posted zsy12138
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二阶构造模式相关的知识,希望对你有一定的参考价值。
构造函数只决定对象的初始化状态,不可以决定对象是否创建。
如果在构造函数中使用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; }
以上是关于二阶构造模式的主要内容,如果未能解决你的问题,请参考以下文章