您的位置:首页 > 编程语言 > C语言/C++

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

2017-08-16 17:29 357 查看
环境: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;
//程序结束

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息