一个单件模式的模板

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

你可能感兴趣的:(C/C++)