设计模式之实现---单件模式

/*************************************

CSingleton.h

**************************************/

#pragma  once
#include <iostream>
#include <string>
using namespace std;

class CSingleton
{
private:
 CSingleton(){
  cout<<"new instance created!"<<endl;
 };
 CSingleton(const CSingleton& _copyInst);
private:
 static CSingleton* g_singleton;

public:
 //这里是单键模式类的关键
 //我在这里实现的是对象的单件,而不是类的单件。
 //要实现类的单件的话,就必须要把类的成员都变为static.
 static CSingleton* getSingleton(){
  if(!g_singleton)
   g_singleton = new CSingleton();
  return g_singleton;
 }
};

/******************************************

testclass.h

*******************************************/

#include "CSingleton.h"
#include <iostream>
using namespace std;

class testSingleton
{
public:
 testSingleton(){
  CSingleton::getSingleton();
  cout<<"ok, called!"<<endl;
 }
};

/*******************************************

CSingleton.cpp

********************************************/

#include "CSingleton.h"

CSingleton* CSingleton::g_singleton = NULL;

/*******************************************

testSingleton.cpp

********************************************/

/*
 设计模式: 单件模式
 by 何戬, hejian@cad.zju.edu.cn
*/

#include <iostream>
#include "CSingleton.h"
#include "testclass.h"
using namespace std;

int main()
{
 CSingleton::getSingleton();
 CSingleton::getSingleton();

 //testSingleton newtest;

 return 0;
}

原文地址:https://www.cnblogs.com/skyofbitbit/p/2756576.html