一个单件模式的模板
2010-06-18 20:52
405 查看
#如果你不知道什么是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
建议大家还是不要滥用单件。这个模式是最容易被滥用的。一般情况下可以用做读配置等需要全局访问之用。
另外就是,多线程切记不要用单件。。除非你加锁,但为了用单件模式加锁,不觉得很傻么?
#如果你是模式爱好者,欢迎提出意见和改进方案.
#从一个工程中摘出来的,做了一些小修改。
#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
建议大家还是不要滥用单件。这个模式是最容易被滥用的。一般情况下可以用做读配置等需要全局访问之用。
另外就是,多线程切记不要用单件。。除非你加锁,但为了用单件模式加锁,不觉得很傻么?
相关文章推荐
- 单件模式的C++模板实现
- Web项目中使用NLog记录日志,利用单件模式控制整个项目只有一个Logger对象的问题
- C#(模板模式)将父窗体继承之后重写一个按钮的事件,为什么每次都要运行两次才结束?
- 单件模式的C++模板实现
- 18.指挥官只有一个——单件模式
- 设计模式---单件(C++版) 一个简单实例(避免用户忘记delete单件实例)
- 用泛型做一个通用的单件模式
- 模板方法模式(Template Method)-定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
- 参考Spring模板模式和回调接口的一个应用
- 一天一个设计模式---模板方法模式
- Java中类的继承,属性和方法的四种修饰符的作用范围,final关键字,java的三大特点中的2个:封装和多态,以及多态的一个设计模式,模板方法模式(template method)
- 看了SAP的笔试题目,顺手写一个单件模式
- 多线程安全的单件模式,模板基类的单件实现
- 确保类只有一个唯一对象,单件模式
- 单件模式带来的一个小麻烦
- C#多线程Singleton(单件)模式模板
- 五分钟一个设计模式之模板方法模式
- win32应用程序模板(DialogBox模式)--用来创建一个进程的
- java设计模式---模板方法