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

    构造函数

    只提供自动初始化成员变量的机会

    不能保证初始化逻辑一定成功

    执行return语句后构造函数立即结束

    半成品对象的概念

    初始化操作不能按照预期完成而得到的对象

    半成品对象是合法的c++对象,也是Bug的重要来源

    二阶构造示例一

    class TwoPhaseCons {

    private:

      TwoPhaseCons() {  //第一阶段构造函数

      }

      bool construct() {  //第二阶段构造函数

        return true;

      }

    public:

      static TwoPhaseCons* NewInstance();  //对象创建函数

    }

    二阶构造示例二

    TwoPhaseCons* TwoPhaseCons::NewInstance() {

      TwoPhaseCons* ret = new TwoPhaseCons();

      //若第二阶段构造失败,返回NULL

      if( !( ret && ret->construct() ) ) {

        delete ret;

        ret = NULL;

      }

      return ret;

    }

    小结

    构造函数只能决定对象的初始化状态

    构造函数中初始化操作的失败不影响对象的诞生

    初始化不完全的半成品对象是Bug的重要来源

    二阶构造人为的将初始化过程分为两部分

    二阶构造能够确保创建的对象都是完整初始化的

  • 相关阅读:
    Postman提取接口返回值设置变量
    Python-浅拷贝与深拷贝
    Python列表
    typeorm查询两个没有关联关系的实体
    springboot去掉数据源自动加载
    docker搭建redis集群
    实习工作记录(一)大文件上传vue+WebUploader
    js重点之promise
    css重点
    git简单命令整理
  • 原文地址:https://www.cnblogs.com/sugarWill666/p/9074500.html
Copyright © 2011-2022 走看看