Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78540
  • 博文数量: 25
  • 博客积分: 416
  • 博客等级: 一等列兵
  • 技术积分: 205
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-23 21:01
文章分类

全部博文(25)

文章存档

2013年(8)

2012年(17)

我的朋友

分类: C/C++

2013-02-20 22:35:22


class Singleton
{
public:
       static Singleton* Instance() ;
protected:
       Singleton() {}
private:
       static Singleton *_instance ;
       Singleton(const Singleton&) ;
       Singleton& operator=(const Singleton&) ;
} ;
 
Singleton* Singleton::_instance = NULL ;
 
Singleton* Singleton::Instance()
{
       (_instance == NULL) ? _instance = new Singleton() : 0 ; //lazy initialization
       return _instance ;
}
#define PATTERN_SINGLETON_DECLARE(classname)
private:										\
	classname();								\
public:											\
	static classname * instance();				\
	virtual ~classname();	

#define PATTERN_SINGLETON_IMPLEMENT(classname)	\
classname * classname::instance()		\
{												\
	static classname * _instance = NULL;		\
	if( NULL == _instance)						\
	{											\
		_instance = new classname;				\
	}											\
	return _instance;							\
}												

class Singleton
{
       PATTERN_SINGLETON_DECLARE(Singleton);
private:
       Singleton(const Singleton&) ;
       Singleton& operator=(const Singleton&) ;
} ;
 
PATTERN_SINGLETON_IMPLEMENT(Singleton);


阅读(909) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~