1. 程式人生 > >2.1 設計模式之單例模式

2.1 設計模式之單例模式

單例模式

餓漢式與懶漢式程式碼
class singleTon
{
private:
	singleTon() {}
	~singleTon() {}
public:
	static singleTon* getInstance() {	
		if(NULL == instance_ )		// 多執行緒的情況下需要加鎖  
			instance_ = new singleTon();
		return instance_;
	}
private:
	//用於自動回收
	class garbo
	{
	public:
		~garbo() {
			if (instance_ != NULL) {
				delete instance_;
			}
		}
	};

private:
	static singleTon* instance_;
	static garbo garbo_;
};

#ifndef LAZY_MODE   // 沒有定義懶漢式初始化
singleTon* singleTon::instance_ = new singleTon();
#endif // !LAZY_MODE

singleTon::garbo singleTon::garbo_;

void test_singleTon(){
	singleTon::getInstance();
}