青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

那誰的技術博客

感興趣領域:高性能服務器編程,存儲,算法,Linux內核
隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
數據加載中……

常見設計模式的解析和實現(C++)之五-Singleton模式

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

UML結構圖:


解析:
Singleton模式其實是對全局靜態變量的一個取代策略,上面提到的Singleton模式的兩個作用在C++中是通過如下的機制實現的:1)僅有一個實例,提供一個類的靜態成員變量,大家知道類的靜態成員變量對于一個類的所有對象而言是惟一的 2)提供一個訪問它的全局訪問點,也就是提供對應的訪問這個靜態成員變量的靜態成員函數,對類的所有對象而言也是惟一的.在C++中,可以直接使用類域進行訪問而不必初始化一個類的對象.
下面的實現其實是Singleton的一個簡單實現,并不是特別的通用,一般的,如果一個項目中需要使用到Singleton模式比較多的話,那么一般會實現一個Singleton的模板類,模板類的模板參數是需要采用Singleton模式的類,比如這樣實現:
template<typename?T>
class?Singleton
{
//.類的聲明
}
;

//?需要采用singleton模式的類
class?Test
???:?
public?Singleton<Test>
{
//?類的聲明
}
;

但是,下面的實現還是采用最簡單的實現辦法,起的是演示的作用

實現:
1)Singleton.h
/********************************************************************
????created:????2006/07/20
????filename:?????Singleton.h
????author:????????李創
????????????????
http://m.shnenglu.com/converse/

????purpose:????Singleton模式的演示代碼
********************************************************************
*/


#ifndef?SINGLETON_H
#define?SINGLETON_H

class?Singleton
{
public:
????Singleton()
{};
????
~Singleton(){};

????
//?靜態成員函數,提供全局訪問的接口
????static?Singleton*?GetInstancePtr();
????
static?Singleton??GetInstance();

????
void?Test();

private:
????
//?靜態成員變量,提供全局惟一的一個實例
????static?Singleton*?m_pStatic;
}
;

#endif

2)Singleton.cpp
/********************************************************************
????created:????2006/07/20
????filename:?????Singleton.cpp
????author:????????李創
????????????????
http://m.shnenglu.com/converse/

????purpose:????Singleton模式的演示代碼
********************************************************************
*/


#include?
"Singleton.h"
#include?
<iostream>

//?類的靜態成員變量要在類體外進行定義
Singleton*?Singleton::m_pStatic?=?NULL;

Singleton
*?Singleton::GetInstancePtr()
{
????
if?(NULL?==?m_pStatic)
????
{
????????m_pStatic?
=?new?Singleton();
????}


????
return?m_pStatic;
}


Singleton?Singleton::GetInstance()
{
????
return?*GetInstancePtr();
}


void?Singleton::Test()
{
????std::cout?
<<?"Test!\n";
}

3)Main.cpp
/********************************************************************
????created:????2006/07/20
????filename:?????Main.cpp
????author:????????李創
????????????????
http://m.shnenglu.com/converse/

????purpose:????Singleton模式的測試代碼
********************************************************************
*/


#include?
"Singleton.h"
#include?
<stdlib.h>

int?main()
{
????
//?不用初始化類對象就可以訪問了
????Singleton::GetInstancePtr()->Test();
????Singleton::GetInstance().Test();

????system(
"pause");

????
return?0;
}

posted on 2006-07-21 14:27 那誰 閱讀(3788) 評論(7)  編輯 收藏 引用 所屬分類: 設計模式

評論

# re: 常見設計模式的解析和實現(C++)之五-Singleton模式   回復  更多評論   

可以把Singleton(){};申明成protect,這樣避免調用者錯誤的初始化
2006-08-14 14:04 | rdcfeca

# re: 常見設計模式的解析和實現(C++)之五-Singleton模式   回復  更多評論   

這個。。好像可以生成N多對象吧
2009-03-03 14:18 | no

# re: 常見設計模式的解析和實現(C++)之五-Singleton模式   回復  更多評論   

那個new出來的對象要在那里刪除那???
2009-12-11 18:44 | palen

# re: 常見設計模式的解析和實現(C++)之五-Singleton模式   回復  更多評論   

@palen
那個不需要刪除,不是內存泄漏
2009-12-15 14:58 | Joshua Zhu

# re: 常見設計模式的解析和實現(C++)之五-Singleton模式   回復  更多評論   

Singleton模式的用處是保證一個類只有一個唯一的實例,而且提供一個全局的訪問點。
博主這個類可以生成很多對象,并沒有保證類的實例的唯一性。
應將構造函數聲明為private 或者 protected
2011-04-22 16:00 | zhanglistar

# re: 常見設計模式的解析和實現(C++)之五-Singleton模式   回復  更多評論   

似乎簡化了很多哦 很感謝
2011-06-16 13:57 | Skill

# re: 常見設計模式的解析和實現(C++)之五-Singleton模式   回復  更多評論   

@zhanglistar
不會生產多個的,有static修飾,而且有null判斷。在構造里加打印,可以看到只有一次打印。
2013-10-30 11:01 | angelzlz
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品在线一区二区| 欧美日韩国产综合视频在线观看中文 | 久久精品欧美| 午夜在线精品偷拍| 亚洲欧美制服中文字幕| 亚洲欧美日韩精品久久亚洲区| 亚洲精品欧洲精品| 一区二区三区国产精华| 亚洲桃花岛网站| 欧美一区二区视频网站| 久久精品伊人| 欧美巨乳波霸| 国产亚洲精品v| 亚洲电影第三页| 这里只有精品在线播放| 亚洲欧美日韩国产另类专区| 日韩视频―中文字幕| 99在线精品视频| 欧美在线亚洲一区| 亚洲国产激情| 亚洲九九精品| 久久久91精品国产一区二区精品| 久久精品夜色噜噜亚洲a∨ | 久久久久久自在自线| 免费在线看一区| 国产精品久久久久一区二区| 国产精品日韩一区二区三区| 国产精品福利影院| 亚洲黑丝在线| 久久精彩免费视频| 99pao成人国产永久免费视频| 亚洲欧美一区二区视频| 欧美88av| 激情91久久| 亚洲欧美一区二区在线观看| 欧美一区二区三区喷汁尤物| 久久久午夜视频| 亚洲一区高清| 欧美日韩成人网| 亚洲激情影视| 欧美国产三区| 欧美高清在线视频| 欧美成人精品一区二区| 日韩视频第一页| 亚洲久久在线| 欧美少妇一区二区| 亚洲视频观看| 亚洲一区二区精品在线| 久久国产福利国产秒拍| 国产欧美日韩高清| 亚洲欧洲一区二区三区在线观看| 国产精品亚洲第一区在线暖暖韩国| 国产精品国产三级国产aⅴ浪潮| 亚洲欧美在线免费观看| 一区二区三区四区五区在线| 午夜精品久久久| 亚洲级视频在线观看免费1级| 99精品欧美一区| 欧美激情国产日韩| 亚洲精品1区2区| 亚洲第一中文字幕在线观看| 亚洲欧美激情一区二区| 欧美日韩精品一区二区| 亚洲国产日韩美| 欧美国产亚洲精品久久久8v| 一区二区三区日韩精品| 欧美日一区二区三区在线观看国产免 | 亚洲激情在线观看| 亚洲高清一二三区| 欧美激情麻豆| 亚洲视频在线看| 亚洲小说春色综合另类电影| 欧美+日本+国产+在线a∨观看| 影音先锋亚洲一区| 欧美黄色影院| 欧美日韩亚洲一区二区三区在线观看 | 亚洲综合视频一区| 亚洲图片在线| 国产日韩视频| 国产视频亚洲| 亚洲精品国产日韩| 欧美日韩高清一区| 亚洲一区二区三区三| 亚洲精品国产拍免费91在线| 久久免费午夜影院| 亚洲美女精品久久| aa日韩免费精品视频一| 欧美香蕉大胸在线视频观看| 一本一本大道香蕉久在线精品| 亚洲美女免费精品视频在线观看| 欧美精品一区二区三区蜜桃| 亚洲日本中文字幕免费在线不卡| 亚洲国产成人tv| 国产精品久久久久久亚洲调教| 欧美一区二区三区免费大片| 中日韩美女免费视频网址在线观看| 国产精品青草综合久久久久99 | 久久精品99无色码中文字幕 | 欧美成人dvd在线视频| 日韩视频在线观看国产| 一本久久青青| 亚洲大片在线| 亚洲自拍偷拍一区| 亚洲三级免费电影| 香港成人在线视频| 亚洲在线视频一区| 欧美成人综合网站| 久久一二三国产| 国产精品主播| 日韩视频免费观看高清在线视频 | 久久久久久久久久久久久女国产乱| 亚洲高清影视| 香港久久久电影| 亚洲香蕉网站| 欧美欧美在线| 欧美护士18xxxxhd| 国产亚洲欧美另类中文| 亚洲精品国产无天堂网2021| 欧美日韩一卡二卡| 欧美韩日视频| 影音先锋中文字幕一区二区| 91久久精品美女高潮| 国产亚洲精品7777| 亚洲专区一二三| 欧美成年人视频网站| 欧美一级视频一区二区| 欧美成年人网| 亚洲国产精品成人综合色在线婷婷 | 国内精品一区二区| 亚洲欧美999| 性感少妇一区| 国产精品一区久久| 亚洲一区在线观看免费观看电影高清 | 欧美另类一区二区三区| 午夜精品久久久久久久久 | 欧美福利一区二区三区| 欧美午夜视频在线观看| 欧美国产日本在线| 亚洲国产精品一区制服丝袜| 亚洲视频在线看| 亚洲男人天堂2024| 国产精品一区免费观看| 亚洲最新视频在线播放| 99国产精品久久久久老师| 久久一本综合频道| 亚洲国产精品精华液2区45| 亚洲国产精品电影| 欧美国产日韩在线| av成人天堂| 久久国产婷婷国产香蕉| 国产欧美日韩综合| 久久久精品动漫| 亚洲国产精品嫩草影院| 日韩五码在线| 国产精品第13页| 小嫩嫩精品导航| 亚洲第一网站免费视频| 亚洲精品色图| 国产精品第2页| 久久精品五月| 亚洲看片网站| 久久久久九九九九| 亚洲精品一线二线三线无人区| 欧美精品 国产精品| 亚洲日本电影| 欧美一区二区在线| 亚洲欧洲精品一区二区三区不卡| 欧美第一黄网免费网站| 夜夜爽99久久国产综合精品女不卡| 亚洲综合激情| 亚洲福利视频专区| 国产精品色婷婷| 欧美成人中文字幕| 先锋亚洲精品| 日韩亚洲不卡在线| 欧美www视频| 久久中文精品| 亚洲影院在线观看| 亚洲丰满在线| 久久精品女人| 亚洲在线播放电影| 91久久久国产精品| 国产午夜精品视频| 欧美视频二区| 老司机午夜免费精品视频| 亚洲美女精品久久| 免费亚洲视频| 久久精品国亚洲| 午夜国产不卡在线观看视频| 国产日韩欧美电影在线观看| 久久久亚洲国产天美传媒修理工 | 亚洲欧美偷拍卡通变态| 欧美激情视频在线免费观看 欧美视频免费一 | 午夜精品福利视频| av成人免费| 亚洲欧洲一区二区三区在线观看| 午夜综合激情| 亚洲专区欧美专区| 中文精品视频一区二区在线观看| 在线观看亚洲精品|