您的位置:首页 > 其它

浅谈设计模式之四——Singleton模式

2015-04-22 23:06 344 查看
单例模式,即只有一个实例。

先上uml图:



uml解析:基本思路是,构造函数为protected或者private,类不能被实例化,否则就可以有多个实例。static的特性使得类不需要被实例化就能被调用(因为它和全局变量一样是放在数据段)

下面给出可以执行的代码:

singleton.h

#pragma once
#include <iostream>
using namespace std;

class Singleton
{
protected:
Singleton(void);
~Singleton(void);
public:
static Singleton * getInstance();
void showInstance();
private:
static Singleton * m_Instance;
};


singleton.cpp

#include "Singleton.h"

Singleton * Singleton::m_Instance = NULL;//类外定义

Singleton::Singleton(void)
{
}

Singleton::~Singleton(void)
{
}

Singleton * Singleton::getInstance()
{
if ( m_Instance == NULL )
{
m_Instance = new Singleton();
}

return m_Instance;
}

void Singleton::showInstance()
{
cout<<m_Instance<<endl;
}


main.cpp

#include "Singleton.h"

int main(int argc,char ** argv)
{
Singleton *p1 = Singleton::getInstance();
p1->showInstance();

Singleton *p2 = Singleton::getInstance();
p2->showInstance();

return 0;
}


执行结果:



可以看到执行结果是一样的。当然,这样的单例类其实是有缺陷的,比如多线程需要考虑的问题,还需要把重载操作符等,留给读者自己完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: