設計模式——實現單例模式

    單例模式是最簡單的設計模式,沒有之一,相信大家也都聽說過。單例設計模式適合於一個類只有一個實例的情況,比如窗口管理器,打印緩衝池和文件系統,它們都是原型的例子。典型的情況是,那些對象的類型被遍及一個軟件系統的不同對象訪問,因此需要一個全局的訪問指針,這便是衆所周知的單例模式的應用。

    通過單例模式你可以:

    一、確保一個類只有一個實例被建立

    二、提供了一個對對象的全局訪問指針

    經典的單例模式有兩種,懶漢式、餓漢式。

    懶漢式的特點是延遲加載,比如配置文件,採用懶漢式的方法,顧名思義,懶漢嘛,很懶的,配置文件的實例直到用到的時候纔會加載。。。。。。

    餓漢式的特點是一開始就加載了,如果說懶漢式是“時間換空間”,那麼餓漢式就是“空間換時間”,因爲一開始就創建了實例,所以每次用到的之後直接返回就好了。

   

    下面我們就來自己設計一個單例模式的類:

   

class Singleton//懶漢模式 
{ 
private: 
    Singleton(){} 
public: 
    static Singleton* p; 
    static Singleton* getInstance(); 
}; 

Singleton* Singleton::p=NULL; 

Singleton* Singleton::getInstance() 
{ 
	if(NULL==p) 
    { 
    	if(mtx.try_lock()) 
        { 
            p=new Singleton; 
            mtx.unlock(); 
        } 
    } 
    return p; 
} 

class Singleton//餓漢模式 
{ 
private: 
    Singleton(){} 
public: 
    static Singleton* p; 
    static Singleton* getInstance() 
    { 
        return p; 
    } 
}; 

Singleton* Singleton::p=new Singleton; 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章