设计模式之单例模式 最快入门
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;
//程序结束
}
语言: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;
//程序结束
}
相关文章推荐
- 设计模式(22) 备忘录模式(简单入门 行为模式)
- 设计模式入门指南
- 书评--设计模式入门
- 设计模式入门-工厂模式
- 书评--设计模式入门
- 书评--设计模式入门
- 设计模式入门-状态模式(php版)
- 企业模式和设计模式快速入门
- 《Head First 设计模式》学习笔记一:设计模式入门
- 设计模式学习 设计模式入门
- 设计模式入门学习 状态State模式
- 设计模式入门--设计模式学习笔记<一>
- IOS开发入门之设计模式
- 设计模式入门学习 构建Builder模式
- 给新手朋友 推荐几本书(从C#入门到SQL及设计模式)
- 设计模式入门-观察者模式
- 应用程序架构本质,第 2 部分: 设计模式入门
- 设计模式入门-设计模式的原则
- 设计模式入门-策略模式(php版)
- Java中23种设计模式--超快速入门及举例代码