單例模式小結

2021-06-23 04:52:13 字數 1350 閱讀 8581

條件一:單例是保重乙個類只有乙個例項,

條件二:並且提供乙個訪問他的全域性訪問點。

①如果只是構造乙個例項,為了防止外部呼叫該建構函式,將建構函式訪問許可權標記物protected或者private。

②提供全域性訪問點,需要在類中定義乙個static函式,返回類內唯一建構函式的例項。

**如下:(要考慮多執行緒): 屬於懶漢模式,單例例項只在第一次被使用的時候對它初始化。getinstance只是在第一次被呼叫時候為p_instance初始化並分配記憶體,初始化順序***,多型也沒問題。但是不會自動呼叫析構函式,需要自己寫乙個函式手動的對它析構。

#include #include using namespace std;

class singeton

//unlock();

} return p_instance;

} static void destroyinstance() }

void showdata()

private:

singeton()

private:

int m_data;

static singeton* p_instance;

}; singeton* singeton::p_instance=null; //定義(初始化)時不受private和protected訪問限制.

//singeton singeton::m_data=null; 錯誤,只能通過類公共成員來訪問

void main()

2,

也是懶漢模式(區域性靜態變數-最佳版)

getinstance()函式內部定義區域性變數的好處是,只會在第一次呼叫getinstance()時候建構函式被初始化。達到動態初始化效果。保證了成員變數

和singleton本身的初始化順序。

還有乙個潛在安全措施;getinstance()返回的是區域性靜態變數的引用。

#include #include using namespace std;

class singeton

void showdata()

private:

singeton()

//自己據情況定義,這裡測試用

singeton(const singeton& other){} //自己據情況定義

singeton& operator=(singeton const&){} //自己據情況定義

~singeton(){} //自己據情況定義

private:

int m_data;

};void main()

單例模式小結!

簡單說來,單例模式 也叫單件模式 的作用就是保證在整個應用程式的生命週期中,任何乙個時刻,單例類的例項都只存在乙個 當然也可以不存在 具體實現就是把單例類的構造方法訪問許可權設定成private,然後在單例類裡面定義getinstance 方法來訪問構造方法 getinstance 通過如下方式保證...

單例模式小結

單例模式有5種實現方式,實現單例模式要掌握的要點 1 構造方法私有,為private 2 確保單例類只有乙個物件,尤其是多執行緒模式下 1.餓漢式 public class singleton public static singleton getinstance 2.懶漢式,有兩種寫法 非執行緒安...

單例設計模式小結

單例設計模式 單例模式用途 保證類在記憶體中只有乙個物件。單例模式案例 1 餓漢式 開發用這種方式。class singleton 2,建立本類物件 private static singleton s new singleton 3,對外提供公共的訪問方法 public static single...