单例模式(singleton)

1、作用

在完全使用面向对象模式编程情况下,需要一个唯一对象。这个时候不能定义static的全局变量,就需要使用到单例模式Singleton。(工厂模式中的工厂,可以只用一个)

2、实现方式

单例模式实现很简单,只是用一个类来封装一个静态类型的变量,提供一个获取静态成员变量的函数,并且函数中保证静态成员变量只new一次。单例模式返回的是静态对象的指针,用不完全类型只能定义指针变量,在定义instance时,Singleton类还是不完全定义的。

单例模式(singleton)

3、C++代码

Singleton.h

class Singleton {
public:
     static Singleton *Instance();
private:
Singleton(); // Singleton不应该在外边实例化,所以把构造函数声明为private的或者protected的
static Singleton *instance; };

Singletong.cpp

#include <iostream>
#include "Singleton.h"

using namespace std;

Singleton *Singleton::instance = nullptr;

Singleton::Singleton() {
      cout<<"new instance ...."<<this<<endl;
}

Singleton *Singleton::Instance() {
      if(instance == nullptr)
             instance = new Singleton();

      cout<<"get instance ..."<<instance<<endl;
      return instance;
}

test.cpp

#include "Singleton.h"

int main() {
     Singleton *s1 = Singleton::Instance();
     Singleton *s2 = Singleton::Instance();
     Singleton *s3 = Singleton::Instance();
}

输出:只new了一次对象

new instance ... 0x161ac20
get instance ... 0x161ac20
get instance ... 0x161ac20
get instance ... 0x161ac20

 

原文链接: https://www.cnblogs.com/yuandonghua/p/11805130.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    单例模式(singleton)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/307128

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 上午5:00
下一篇 2023年2月16日 上午5:03

相关推荐