日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺談C++設(shè)計模式之單例模式

單例模式:保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。

  通常我們可以讓一個全局變量使得一個對象被訪問,但它不能防止客戶實例化多個對象,一個***的辦法就是讓類自身負責(zé)保護它的唯一實例,這個類可以保證沒有其它實例可以被創(chuàng)建,并且它可以提供一個訪問該實例的方法。

  單例模式因為Singleton類封裝它的唯一實例,這樣它可以嚴格控制客戶怎樣訪問它以及何時訪問它,簡單地說就是對唯一實例的受控訪問。

  實現(xiàn)原理:將構(gòu)造函數(shù)私有化,只提供一個靜態(tài)方法來創(chuàng)建一個對象。

  (1) 將構(gòu)造函數(shù)設(shè)置成private;

  (2) 聲明一個靜態(tài)的字段,初始化一個實例,返回Singleton對象;

  (3) 用靜態(tài)方法或靜態(tài)屬性,返回那個唯一的實例

  當然,在對象用多線程時,可能會造成創(chuàng)建多個實例,可以給創(chuàng)建對象的過程加鎖。

  • Singleton:定義一個Instance操作

 
 
  1. class Singleton{
  2. public:
  3.     static Singleton* Instance();
  4. protected:
  5.     Singleton(){}
  6.     Singleton(const Singleton &instance){}
  7.     Singleton& operator=(const Singleton &instance){}
  8. private:
  9.     static Singleton* instance;
  10. };
  11. Singleton* Singleton::Instance(){
  12.     if(instance == 0)
  13.         instance = new Singleton;
  14.     return instance;
  15. }
  16. Singleton* Singleton::instance = 0;

  其實,單例模式中最關(guān)鍵的就是把public的構(gòu)造函數(shù)私有化。這樣就把構(gòu)造對象的實例化的權(quán)利交給了類本身,讓Singleton來控制類的 實例化。當然除了構(gòu)造函數(shù)之外,還需要把類的控制復(fù)制函數(shù)(拷貝構(gòu)造函數(shù),賦值運算)私有化,因為客戶端沒有構(gòu)造的權(quán)利,所以也就沒有使用控制復(fù)制函數(shù)的 權(quán)利。


網(wǎng)頁標題:淺談C++設(shè)計模式之單例模式
本文網(wǎng)址:http://www.dlmjj.cn/article/coppgoo.html