设计模式——实现单例模式
2015-08-10 20:51
239 查看
单例模式是最简单的设计模式,没有之一,相信大家也都听说过。单例设计模式适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,它们都是原型的例子。典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问指针,这便是众所周知的单例模式的应用。
通过单例模式你可以:
一、确保一个类只有一个实例被建立
二、提供了一个对对象的全局访问指针
经典的单例模式有两种,懒汉式、饿汉式。
懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法,顾名思义,懒汉嘛,很懒的,配置文件的实例直到用到的时候才会加载。。。。。。
饿汉式的特点是一开始就加载了,如果说懒汉式是“时间换空间”,那么饿汉式就是“空间换时间”,因为一开始就创建了实例,所以每次用到的之后直接返回就好了。
下面我们就来自己设计一个单例模式的类:
通过单例模式你可以:
一、确保一个类只有一个实例被建立
二、提供了一个对对象的全局访问指针
经典的单例模式有两种,懒汉式、饿汉式。
懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法,顾名思义,懒汉嘛,很懒的,配置文件的实例直到用到的时候才会加载。。。。。。
饿汉式的特点是一开始就加载了,如果说懒汉式是“时间换空间”,那么饿汉式就是“空间换时间”,因为一开始就创建了实例,所以每次用到的之后直接返回就好了。
下面我们就来自己设计一个单例模式的类:
class Singleton//懒汉模式 { private: Singleton(){} public: static Singleton* p; static Singleton* getInstance(); }; Singleton* Singleton::p=NULL; Singleton* Singleton::getInstance() { if(NULL==p) { if(mtx.try_lock()) { p=new Singleton; mtx.unlock(); } } return p; }
class Singleton//饿汉模式 { private: Singleton(){} public: static Singleton* p; static Singleton* getInstance() { return p; } }; Singleton* Singleton::p=new Singleton;
相关文章推荐
- Oracle EBS FSG报表迁移
- hdu 1203 - I NEED A OFFER!(01背包)解题报告
- xhost +的作用
- NS3网络仿真(9): 构建以太网帧
- 滚动数组
- hdu-2115-I Love This Game
- boost学习之一(安装boost库)
- layout版的slidemenu
- 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求(转)
- [Python基础]010.os模块(2)
- oracle几种关闭方式实验
- IOS MapKit 输入城市名获取经纬度显示地图
- 两分钟读懂《成大事者不纠结》——读书笔记
- 【时间管理法】用三个学期拿双学位,还不耽误睡眠和社交
- 4.【SELinux学习笔记】SELinu策略语言
- CentOS DNS搭建
- 幸运数
- 剑指Offer面试题42(Java版):反转单词顺序VS左旋转字符串
- hdoj 1513 Palindrome 【LCS 滚动数组实现】
- atitit.浏览器插件解决方案----ftp插件 attilax 总结