概述:
singleton模式称作单件模式或单例模式。它的作用是确保一个类在整个工程中有且只有一个实例。可以在多个不同的类中很方便的所需要的类的方法。
应用领域:常用在游戏编程和多线程编程中,读取配置文件,写入日志。
原理:
它的构造函数是私有的,你不能去new 它。该单例类里面已经实例化好了一个了,并且是static的,并提供一个获取该实例的方法!客户端只能通过该方法获取这个已经实例化好了的,这样就保证了只有一个实例存在!
1. Singleton.h文件
/*
* Singleton.h
*/
#ifndef SINGLETON_H_
#define SINGLETON_H_
#include namespace GSingleton
{
template class Singleton
{
protected:
static T* mSingleton;
private:
Singleton()
{
assert(!mSingleton);
mSingleton=static_cast< T*>(this);
cout<
2. 类SubClass继承并实例化模板类Singleton
/*
* SubClass.h
*/
#ifndef SUBCLASS_H_
#define SUBCLASS_H_
#include "Singleton.h"
#include using namespace std;
class SubClass:public GSingleton::Singleton{
public:
SubClass();
virtual ~SubClass();
inline void Show()
{
static int s=0;
s++;
cout< SubClass* GSingleton::Singleton::mSingleton=0;
SubClass::SubClass()
{
}
SubClass::~SubClass()
{
}
3. 使用函数SubClass::Show()
#include "SubClass.h"
SubClass::getSingletonPtr()->Show();