欢迎来到天天文库
浏览记录
ID:40313981
大小:26.20 KB
页数:7页
时间:2019-07-30
《Singleton模式1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Singleton模式是常用的设计模式之一,但是要实现一个真正实用的设计模式却也不是件容易的事情。1. 标准的实现class Singleton{public: static Singleton * Instance() { if( 0== _instance) { _instance = new Singleton; } return _insta
2、nce; }protected: Singleton(void) { } virtual ~Singleton(void) { } static Singleton*_instance;}; 这是教科书上使用的方法。看起来没有什么问题,其实包含很多的问题。下面我们一个一个的解决。2. 自动垃圾回收上面的程序必须记住在程序结束的时候,释放内存。为了让它自动的释放内存,我们引入auto_ptr改变它。#inclu
3、de #include using namespace std;class Singleton{public: static Singleton * Instance() { if( 0== _instance.get()) { _instance.reset( new Singleton); } return _instance
4、.get(); }protected: Singleton(void) { cout <<"CreateSingleton"<; static auto_ptr5、gleton> _instance;};//Singleton.cppauto_ptr Singleton::_instance;3. 增加模板在我的一个工程中,有多个的Singleton类,对Singleton类,我都要实现上面这一切,这让我觉得烦死了。于是我想到了模板来完成这些重复的工作。现在我们要添加本文中最吸引人单件实现:/******************************************************************** (c)2003-206、05C2217Studio Module: Singleton.h Author: YangjunD. Created: 9/3/2005 23:17 Purpose: Implementsingletonpattern History:*********************************************************************/#pragma once #include using namespace std7、;using namespace C2217::Win32; namespace C2217{namespace Pattern{template class Singleton{public: static inline T* instance(); private: Singleton(void){} ~Singleton(void){} Singleton(const Singleton&){} Singleton & operator=8、 (const Singleton &){} static auto_ptr _instance;}; template auto_ptr Singleton::_instance; templat
5、gleton> _instance;};//Singleton.cppauto_ptr Singleton::_instance;3. 增加模板在我的一个工程中,有多个的Singleton类,对Singleton类,我都要实现上面这一切,这让我觉得烦死了。于是我想到了模板来完成这些重复的工作。现在我们要添加本文中最吸引人单件实现:/******************************************************************** (c)2003-20
6、05C2217Studio Module: Singleton.h Author: YangjunD. Created: 9/3/2005 23:17 Purpose: Implementsingletonpattern History:*********************************************************************/#pragma once #include using namespace std
7、;using namespace C2217::Win32; namespace C2217{namespace Pattern{template class Singleton{public: static inline T* instance(); private: Singleton(void){} ~Singleton(void){} Singleton(const Singleton&){} Singleton & operator=
8、 (const Singleton &){} static auto_ptr _instance;}; template auto_ptr Singleton::_instance; templat
此文档下载收益归作者所有