21xrx.com
2024-11-10 00:55:39 Sunday
登录
文章检索 我的文章 写文章
侯捷:C++ 单例模式的实现方法
2023-07-02 19:03:03 深夜i     --     --
C++ 单例模式 实现方法 设计模式 设计模式应用

C++ 单例模式是一种非常常用的设计模式,在程序中可以有效地保证某一个类只能被实例化一次。在 C++ 中,单例模式的实现方法有多种,其中最常用的是饿汉式和懒汉式。在这篇文章中,我们将介绍这两种实现方法的具体实现方式。

饿汉式单例模式的实现方法是在程序启动时创建一个唯一的实例对象,并在需要使用该对象时直接返回该对象的引用。这种方法的特点是在程序运行期间只存在一个实例对象,因此可以有效地保证该对象的唯一性。

以下是饿汉式单例模式的实现代码:


class Singleton {

private:

  Singleton() {}       // 禁止外部实例化

  static Singleton instance; // 唯一的实例对象

public:

  static Singleton& getInstance()

    return instance;

  

};

Singleton Singleton::instance; // 在程序启动时创建唯一实例对象

int main() {

  Singleton& object = Singleton::getInstance();

  return 0;

}

懒汉式单例模式的实现方法则是在需要使用实例对象时再创建该对象。这种方法可以显著减少程序启动时的资源占用,并在需要时提高资源的利用率。

以下是懒汉式单例模式的实现代码:


class Singleton {

private:

  Singleton() {}         // 禁止外部实例化

  static Singleton* instance;   // 唯一的实例对象指针

public:

  static Singleton* getInstance() {

    if (instance == NULL) {

      instance = new Singleton(); // 当实例对象不存在时创建

    }

    return instance;

  }

  static void destroy() {

    if (instance != NULL)

      delete instance;     // 释放实例对象

      instance = NULL;

    

  }

};

Singleton* Singleton::instance = NULL;

int main() {

  Singleton* object = Singleton::getInstance();

  Singleton::destroy();

  return 0;

}

无论是饿汉式还是懒汉式单例模式,都可以有效地保证某一类只能被实例化一次,从而减少程序启动时的资源占用和程序运行时内存的消耗,提高程序的性能和效率。因此,在开发中,应该根据实际需求选择合适的实现方法,来实现单例模式。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复