设计模式--单例模式
2016-05-05 15:55
218 查看
http://www.runoob.com/design-pattern/singleton-pattern.html
应用实例:不能不同打印机同时打印一份文件。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
using namespace std;
class Singleton
{
//构造函数私有,这样不会被实例化
private:
Singleton(){}
//创建一个对象
static Singleton* instance ;
public:
static Singleton* getInstance();
void show(){ cout<<"lalala";}
};
Singleton * Singleton::instance = NULL;
Singleton* Singleton::getInstance()
{
if (instance == NULL)
{
instance = new Singleton;
}
return instance;
}
#include "singleton.h"
int main()
{
//Singleton* sing1 = new Singleton;
Singleton* sing1 = Singleton::getInstance();
sing1->show();
getchar();
return 0;
}
介绍
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。由于构造函数是私有的,因此无法通过构造函数实例化,唯一的方法就是通过调用静态函数GetInstance。应用实例:不能不同打印机同时打印一份文件。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
实现
#include <iostream>using namespace std;
class Singleton
{
//构造函数私有,这样不会被实例化
private:
Singleton(){}
//创建一个对象
static Singleton* instance ;
public:
static Singleton* getInstance();
void show(){ cout<<"lalala";}
};
Singleton * Singleton::instance = NULL;
Singleton* Singleton::getInstance()
{
if (instance == NULL)
{
instance = new Singleton;
}
return instance;
}
#include "singleton.h"
int main()
{
//Singleton* sing1 = new Singleton;
Singleton* sing1 = Singleton::getInstance();
sing1->show();
getchar();
return 0;
}
相关文章推荐
- springboot log4j2配置
- JAVA泛型简析
- allocator类
- spark读取oracle的
- android内存优化的建议
- Process 2(完成版)
- 什么是事件驱动编程风格?
- Android基础 | 控件基础 | Listview之BaseAdapter①
- (礼拜四log)前端开发,使用jq的.css函数添加属性时!important要注意的问题
- 欢迎使用CSDN-markdown编辑器
- swift开发网络篇—利用NSURLSession 发送GET和POST请求
- CodeForces 659E New Reform (DFS)
- ajax与302响应
- CME-M5系列(二)——快速入门
- C++文件读写详解(ofstream,ifstream,fstream)
- 关于"xampp中mysql中配置问题:Unknown initial character set index '48' received from server错误解决方法"
- synchronized详解
- Android ArrayAdapter使用
- New Reform---cf659E(dfs找环)
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别(转)