ホーム > DesignPattern > Singleton

シングルトン

シングルトンクラス

class PrintSpool
{
	private:
		PrintSpool(){}
		PrintSpool(const PrintSpool& obj){}
		PrintSpool& operator=(const PrintSpool& obj){}
	public:
		static PrintSpool* getInstance(){
			static PrintSpool instance;
			return &instance;
		}
		void setSpool(string printData){
			cout << "バッファにデータを格納しました" << printData << endl;
			return;
		}
};

シングルトンクラス (別パターン)

class PrintSpool
{
	private:
		PrintSpool(){}
		PrintSpool(const PrintSpool& obj){}
		PrintSpool& operator=(const PrintSpool& obj){}
		static PrintSpool* instance;
	public:
		static PrintSpool* getInstance(){
			if(instance == NULL){
				instance = new PrintSpool();
			}
			return instance;
		}
		void setSpool(string printData){
			cout << "バッファにデータを格納しました" << printData << endl;
			return;
		}
};
PrintSpool* PrintSpool::instance = NULL;

シングルトン利用クラス

class Process{
	public:
		Process(){}
		void printOut(string printData){
			PrintSpool::getInstance()->setSpool(printData);
		}
};

メインプログラム

void main(void)
{
	Process* pProcA = new Process();
	Process* pProcB = new Process();
	Process* pProcC = new Process();
	
	pProcA->printOut("Singleton pattern");
	pProcB->printOut("しんぐるとんぱたーん");
	pProcC->printOut("シングルトンパターン");
	
	delete pProcA;
	delete pProcB;
	delete pProcC;
	return;
}
このページを共有:
  • このページをはてなブックマークに追加 このページを含むはてなブックマーク
  • このページをlivedoor クリップに追加 このページを含むlivedoor クリップ
  • このページをYahoo!ブックマークに追加
  • このページを@niftyクリップに追加
  • このページをdel.icio.usに追加
  • このページをGoogleブックマークに追加

このページのURL:

TOP