一个单件模式的模板

来源:互联网 发布:软件需求可行性分析 编辑:程序博客网 时间:2024/05/22 03:44
#如果你不知道什么是Singleton那就可以不用往下看了.先搜搜一下Singleton再说,呵呵,免得浪费您的时间.
#如果你是模式爱好者,欢迎提出意见和改进方案.
#从一个工程中摘出来的,做了一些小修改。
#ifndef _XXX_SINGLETON_H_
#define _XXX_SINGLETON_H_
#ifndef NULL
#define NULL  0
#endif
template<class T>
class Singleton
{
public:
static T *instance()
{
  if (singleton_ == NULL)
  {
   singleton_ = new Singleton;
  }
  return &singleton_->instance_;
}
protected:
Singleton();
T instance_;
static Singleton<T> *singleton_;
};
template<class T>
Singleton<T> *Singleton<T>::singleton_ = NULL;
template<class T>
Singleton<T>::Singleton()
{
}
#endif
建议大家还是不要滥用单件。这个模式是最容易被滥用的。一般情况下可以用做读配置等需要全局访问之用。
另外就是,多线程切记不要用单件。。除非你加锁,但为了用单件模式加锁,不觉得很傻么?
原创粉丝点击