设计模式之单例模式 最快入门

来源:互联网 发布:启明星bsc软件 编辑:程序博客网 时间:2024/06/05 21:55

环境:win7,vs2010控制台程序

语言:c++

一、理论

1.什么是单例模式?我们为什么要用单例模式?

首先我们要知道我们为什么要用单例模式,其实在很多的时候我们都用到了单例模式,这也是很经常要用到的,比如一个对象我们只需要它实例化一次,不允许它任意的创建。其实这就是单例模式,就是我们要一个对象只实例化一次,比如数据库的连接。。

2.单例模式有哪些?

单例模式分为两种:一种是懒汉模式,另一种是饿汉模式。

3.怎么创建懒汉模式的单例模式

步骤如下:

第一步:实例化该类的构造函数,

第二步:私有静态化实例对象,保证只在本类执行

第三步:返回一个共有的函数,返回该实例对象


二、最简代码

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
#include <iostream>
using namespace std;

class Cdanlie    
{
private:
Cdanlie();   //构造函数私有
virtual ~Cdanlie();//析构函数私有
static Cdanlie* instance;//定义一个静态变量。
public:
static Cdanlie* Getinstance();//接口
static void say();//其余函数
};

Cdanlie::Cdanlie()
{
cout << "CEmperor Constructor" << endl;
}

Cdanlie::~Cdanlie()     
{
if (NULL!=instance)//如果该实例仍然存在,则析构时删除所指的内存
{
delete instance;
}
}
Cdanlie* Cdanlie::instance=NULL; //初始化
Cdanlie* Cdanlie:: Getinstance() //接口函数,创建实例
{
if (NULL==instance)//如果该变量还未赋值过,则实例一个单例对象。
{
instance=new Cdanlie();
}
return instance;//返回实例指针
}

void Cdanlie::say() //该单例中的普通函数
{
cout<<"hello danlie\n";

}


int _tmain(int argc, _TCHAR* argv[])
{
for (int day=0;day<10;day++)
{
Cdanlie* danlie=Cdanlie::Getinstance();//创建实例,循环十次,但只会创建一次实例
danlie->say();//调用普通函数
}
system("pause");//执行完毕程序停一下,查看控制台程序输出内容
return 0; //程序结束
}