單例模式:一個類有且隻有一個執行個體。
目的:保證類隻有一個執行個體,并提供一個通路它的全局通路點,該執行個體被所有程式子產品共享。
應用:GUI應用必須是單滑鼠,作業系統隻能有一個視窗管理器,一台PC連接配接一個鍵盤,MODEM連接配接有且隻需要一條電話線。
應用背景:一般用于比較複雜的對象,隻初始化一次。
優點:在程式運作時,不會一執行這個類就初始化一次,有效防止資料沖突,節省記憶體空間,不浪費系統資源。
例:
在類student中
static student* instance;
student(){
//初始化函數可以為空
}
student *student::GetInstance(){
if(instance==null){
instance =new student();
}
return instance;
}
int student::getA(int xa){//類的成員函數
xa++;
return xa;
}
student::getinstance()->getA(xa);//調用類的成員函數
使用new直接初始化VS使用GetInstance()初始化的差別:
- GetInstance()可以直接使用,調用多次傳回同一個對象;
- new可以在大部分類裡使用(生産一個執行個體對象,或在棧上聲明一個對象),每部分調用都是新的對象,GetInstance()隻在少部分類中使用;
- 對象使用之前通過getInstance()得到,不需要自己定義,使用後不需要delete;
- new建立後隻能當次使用,GetInstance()可以跨棧區域、遠端跨區域使用;
- new一定生成一個新對象,配置設定記憶體,Get Instance()不一定再次建立,可以使用已經存在的引用。
getInstance()用法_懷苛的部落格-CSDN部落格_getinstance閱讀數:275先舉例說明:下面是一個例子,為什麼要把這個類執行個體化?有什麼好處? //執行個體化 public static DBConnect instance; public static DBConnect getInstance(){ if(instance == null){ instance = new DBconnect(); } return instance; ...
https://blog.csdn.net/qq_41875378/article/details/80921805根據以上連結自我學習;