單件模式 Singleton C 實現

2022-08-05 08:24:20 字數 1476 閱讀 2827

意圖:保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。

實用性:1.當類只能有乙個例項而且客戶可以從乙個眾所周知的訪問點訪問它。

2.當這個唯一的例項應該是通過子類可擴充套件的,並且客戶應該無需更改**就能使用乙個擴充套件的例項時。

效果:   1.只有乙個例項,可以嚴格的控制客戶怎樣以及何時訪問。

2.縮小名空間,避免了唯一例項的全域性變數汙染名空間。

3.可以控制物件的例項個數。

**示例:這裡類是乙個人micla,世界上僅有乙個mical,只能產生乙個例項。

#ifndef _singleton_

#define _singleton_

class

mical

static mical*getmical()

return

_mpmical;

}private

:

static mical*_mpmical;

////避免了不同情況例項化類物件

mical(const mical&another){}

mical& operator = (const mical&another){}

mical(){}

};#endif

實現部分:

#include #include 

"singleton.h

"using

namespace

std;

mical* mical::_mpmical =null;

intmain()

用mical* pmical = mical::getmical();   實現了訪問micla  然後我們可以通過pmical訪問mical的各種屬性(假設為:身高,性別等)

之後通過delete mical::getmical();  刪除物件。  但這樣的刪除容易被遺忘,因為new的過程是被封裝起來的。

於是通過內嵌類實現自動delete:

#ifndef _singleton_

#define _singleton_

class

mical

static mical*getmical()

return

_mpmical;

}private

:

static mical*_mpmical;

////避免了不同情況例項化類物件

mical(const mical&another){}

mical& operator = (const mical&another){}

mical(){}

class

delete

~delete()

};};#endif

這就實現了singleton;

要注意的是  1.封死其他的例項化介面      2.物件刪除問題處理

設計模式之單例模式 Singleton C 實現

特點 1.建構函式 私有化,因此不能直接定義乙個該類的物件 private csingle 2.定義乙個型別為 該類本身的指標 的乙個靜態成員 static csingleton m singleinstance 3.定義乙個返回型別為 該類本身的指標 的乙個靜態成員函式 static csingl...

單件模式(單例模式)

readme 0.1 本文部分描述 head first 設計模式 旨在學習 單件模式 單例模式 的相關知識 及其應用 單件模式 1.0 單件模式的應用背景 有一些物件其實我們只需要乙個,比方說 執行緒池,快取,對話方塊,登錄檔等的物件,這都可以通過單件模式來解決 1.1 定義 確保乙個類只有乙個例...

單件模式(單例模式)

1 單件模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點。2 經典的單件模式實現 public class singleton public static singleton getinstance return uniqueinstance 問題點 public static singleto...