两种实现单件模式代码重用的方法
2010-09-03 08:42
489 查看
#ifndef _ZKit_Singleton_h_
#define _ZKit_Singleton_h_
#include "ZKit_Config.h"
BEGIN_ZKIT
template <class T>
class Singleton
{
public:
static T* instance()
{
if ( 0 == s_instance )
{
s_instance = new T;
}
return s_instance;
}
static void unInstance()
{
if ( 0 != s_instance )
{
delete s_instance;
s_instance = 0;
}
}
protected:
Singleton() {}
virtual ~Singleton() {}
private:
Singleton(const Singleton<T> &);
Singleton<T>& operator= (const Singleton<T> &);
static T* s_instance;
};
template <class T>
T* Singleton<T>::s_instance = 0;
//////////////////////////////////////////////////////////////////////////
//用宏实现单件模式的代码重用, 可作为上面模板类的替代品
#define DECLARE_SINGLETON(Singleton) \
public:\
static Singleton* Instance(){if (m_instance == 0)m_instance = new Singleton();return m_instance;}\
static void Release(){delete m_instance;m_instance = 0;}\
private:\
Singleton& operator=(const Singleton&);\
Singleton(const Singleton&);\
static Singleton* m_instance;
#define IMPLEMENT_SINGLETON(Singleton) Singleton* Singleton::m_instance = 0;
END_ZKIT
#endif // _ZKit_Singleton_h_
类别:c++ 查看评论
#define _ZKit_Singleton_h_
#include "ZKit_Config.h"
BEGIN_ZKIT
template <class T>
class Singleton
{
public:
static T* instance()
{
if ( 0 == s_instance )
{
s_instance = new T;
}
return s_instance;
}
static void unInstance()
{
if ( 0 != s_instance )
{
delete s_instance;
s_instance = 0;
}
}
protected:
Singleton() {}
virtual ~Singleton() {}
private:
Singleton(const Singleton<T> &);
Singleton<T>& operator= (const Singleton<T> &);
static T* s_instance;
};
template <class T>
T* Singleton<T>::s_instance = 0;
//////////////////////////////////////////////////////////////////////////
//用宏实现单件模式的代码重用, 可作为上面模板类的替代品
#define DECLARE_SINGLETON(Singleton) \
public:\
static Singleton* Instance(){if (m_instance == 0)m_instance = new Singleton();return m_instance;}\
static void Release(){delete m_instance;m_instance = 0;}\
private:\
Singleton& operator=(const Singleton&);\
Singleton(const Singleton&);\
static Singleton* m_instance;
#define IMPLEMENT_SINGLETON(Singleton) Singleton* Singleton::m_instance = 0;
END_ZKIT
#endif // _ZKit_Singleton_h_
类别:c++ 查看评论
相关文章推荐
- Singleton(单件)模式的两种实现方法
- [置顶] java面试题:java中的单例设计模式及两种实现方法的代码举例
- 设计模式(01) 单例模式(创建类模式)(上,两种推荐的实现方法)
- 设计模式-代理模式与适配器模式实现代码重用以及策略模式的使用
- OC 中一次性代码的两种实现方法
- 设计模式----模板方法模式UML和实现代码
- Python单例模式的两种实现方法
- 单件模式的几种实现方法
- 【怎样写代码】确保对象的唯一性 -- 单例模式(五):一种更好的单例实现方法(静态内部类)
- JAVA用JNI方法调用C代码实现HelloWorld(含windows及ubuntu两种操作系统环境下的操作)
- JS实现星星评分功能实例代码(两种方法)
- C++实现“单例模式”的两种方法
- [代码重用]--PHP 实现代码复用的一个方法 traits新特性
- C++两种编写单件模式方法对比
- Android上用模板方法模式实现具有自动重用View功能的Adapter
- 数据结构——BinarySearch两种方法的代码实现
- 单例模式的简单实现与两种实现方法的比较(饿汉式和懒汉式)(二)
- [设计模式]两种方法实现简单工厂模式
- android中通过contentprovider访问通讯录代码实现(两种方法实现)
- Singleton模式的两种实现方法