ホーム > 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; }
このページのURL: