多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 基礎工具-單件模式

基礎工具-單件模式

來源:程序員人生   發布時間:2015-04-08 08:55:14 閱讀次數:3885次

作為C++設計模式中的單件模式歸屬于創建型模式之1,在軟件設計進程中“出場“的機會還是很多,以下源碼作為自己學習開源庫代碼時針對單件 模式做的1個總結,方便后期設計進程中的參考和學習。

#ifndef SINGLETON_HPP_ #define SINGLETON_HPP_ #include <boost/thread.hpp> namespace ts { /** *@breif *@note base */ class CLocalStaticInstantiation { protected: template <class T> static void create(T*& ptr) { static T instance; // 靜態局部變量 ptr = &instance; } }; /** *@breif *@note Helper class */ template <class T> class CStaticInstantiationHelpler { // friend class friend class CStaticInstantiation; // holder static T instance; }; template <class T> T CStaticInstantiationHelpler<T>::instance; // 靜態全局變量[這是1個技能,否則單個對象沒法隨時初始化] /** *@breif *@note support the static */ class CStaticInstantiation { protected: template <class T> static void create(T*& ptr) { ptr = &CStaticInstantiationHelpler<T>::instance; } }; template <class T> class CDestroyer { T *doomed; public: CDestroyer(T* q):doomed(q) {} ~CDestroyer(); }; template <class T> CDestroyer<T>::~CDestroyer() { try { if (doomed) { delete doomed; // 在這里主要支持heap對象的反初始化 std::cout << "delete [ " << doomed << " ]" << std::endl; } } catch (...){} doomed = 0; } /** *@breif *@note support the dynamic alloctor */ class CLazyInstantiation { protected: template <class T> static void create(T*& ptr) { ptr = new T; // 支持運行時分配 static CDestroyer<T> destroyer(ptr); // 由static去進行刪除 } }; template <class T, class InstantiationPolicy=CLazyInstantiation> class CSingleton : private InstantiationPolicy { public: static T* instance(); }; template <class T, class InstantiationPolicy> T* CSingleton<T, InstantiationPolicy>::instance() { static T* ptr = 0; static boost::mutex m; if ( !ptr ) { boost::mutex::scoped_lock lock(m); // 支持多線程訪問 if ( !ptr ) // 根據設計模式的設計思想來設計兩次檢查指針 { InstantiationPolicy::create(ptr); } } return const_cast<T*>(ptr); } } #endif // SINGLETON_HPP_


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日本护士色xxxxx视频 | 爱爱欧美在线观看视频 | 国产不卡一区二区三区免费视 | 欧美刺激性色黄大片18 | 国产精品一国产精品免费 | 日韩 亚洲 中文 图片 小说 | 亚洲国产欧美日韩精品一区二区三区 | 欧美成国产精品 | 免费自拍视频 | 国产成人啪精品视频免费网 | 欧美一级高清片免费一级 | www.福利| 爱爱免费网址 | 国产产一区二区三区久久毛片国语 | 亚洲妇人成熟性成熟网站 | 国产视频一二 | 亚洲国产精品a在线 | 欧美视频一 | 亚洲免费大片 | 亚洲成aⅴ人片在线影院八 亚洲成aⅴ人在线观看 | 一区二区三区不卡在线 | 亚洲精品图| 亚洲高清在线视频 | 欲色综合 | 精品国产麻豆免费网站 | 一区二区午夜 | 亚洲精品一区亚洲精品 | 日本香蕉一区二区三区 | 一区二区三区鲁丝不卡麻豆 | 福利在线网站 | 成年人的天堂 | 亚1州区2区三区4区产品 | 性欧美精品久久久久久久 | 红豆视频日本高清 | 日韩高清免费观看 | 欧美精品亚洲精品日韩一区 | 在线成人tv天堂中文字幕 | 美国一级黄色毛片 | 午夜在线观看视频在线播放版 | 免费h视频网站 | 香蕉高清免费永久在线视频 |