首页 >> 民生杂谈

单例模式学习

民生杂谈  2019-10-06 18:38 字号: 大 中 小

  来源:东方头条 日期: 09:22: 导读:单例设计模式是设计模式里最常用的设计模式,但是实现一个完全符合要求的单例模式却不太容易。其实单例模式的终极目标是要实现:

  单例设计模式是设计模式里最常用的设计模式,但是实现一个完全符合要求的单例模式却不太容易。

  其实单例模式的终极目标是要实现:全局一个类实例。

  最常见的实现方式;(C++版本)

  版本1:

  class Signleton {

  public:

  static Singleton& GetInstance() {

  if (instance_ == NULL) {

  instance_ = new Singleton();

  }

  return *instance_;

  }

  private:

  Singleton() = default;

  static Singleton* instance_;

  };

  Singleton* Singleton::instance_ = NULL;

  版本1中已经涵盖了单例实现的两个关键点:

  关键点1:使用静态的方法和静态的类示例;

  关键点2:构造函数私有化;

  但还是有不足之处,看

  版本2:

  class Signleton {

  public:

  static Singleton& GetInstance() {

  if (instance_ == NULL) {

  instance_ = new Singleton();

  }

  return *instance_;

  }

  private:

  Singleton() = default;

  Singleton(Singleton&) = delete;

  Singleton& operator= (Singleton&) = delete;

  static Singleton* instance_;

  };

  Singleton* Singleton::instance_ = NULL;

  关键点1:使用静态的方法和静态的类示例;

  关键点2:构造函数私有化;

  关键点 :拷贝构造函数和复制运算符也要私有化

  因为Singleton::GetInstance()返回的是Singleton的引用,如果拷贝构造函数不是私有的,

  用户可以通过以下方式构造两个类示例。

  Singleton s(Singleton::GetInstance());

  (:)

常州哪家医院治牛皮癣
镇江治癫痫病医院
泉州专治妇科医院
推荐资讯