C++設計モードのSingletonモード(単例モード)


単例モードは実際のプログラミングで最も広く使われている設計モードと言える.実際のプログラミングの過程で、私たちはいくつかの資源に対して往々にして1つの例しか要求できない.例えば、C++/Cの開発をする時、各インタフェースは1つのオブジェクトであり、これらの窓オブジェクトの操作に対して、一般的には開いたフォームである.フォームオブジェクトの操作は、単一のモードの具体的な使用です.
単例モードは実は3点,(1)私有構造関数(2)私有指向クラスの静的ポインタ変数(3)静的ポインタ変数を取得する関数が共通している.
1.単一クラスの定義
#pragma once
#include 
class CSingleton
{
private:
	CSingleton(void);           //      
        static CSingleton* single;  //        
public:
	static CSingleton* GetInstance(); //        
	void operation();         
};
#include "Singleton.h"
CSingleton* CSingleton::single=NULL; //       
 
CSingleton::CSingleton(void)
{
 
}
 
CSingleton* CSingleton::GetInstance() //          static
{
	if(single==NULL)
	{
		single=new CSingleton();
	}
	return single;
}
 
void CSingleton::operation()
{
	printf("CSingleton operation
"); }

2.実際の呼び出し
CSingleton* p1=CSingleton::GetInstance();
p1->operation();

コンストラクション関数がプライベートではnewによって新しいオブジェクトを生成できません
CSingleton* p2=new CSingleton(); //      

プログラム全体にp 1のオブジェクトしかないことを保証します.