Head First设计模式 C++实现-Singleton(单件模式)
来源:互联网 发布:阿里巴巴域名注册 编辑:程序博客网 时间:2024/05/22 16:47
这个算是设计模式里面最简单的一个模式了,不过它的运用范围还是挺广的.
模式定义:保证一个类仅有一个实例,并提供该实例的全局访问点.
作用范围:在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性/以及良好的效率.
有的人可能会认为可以利用全局变量来解决这个问题,但是全局变量会存在一个比较大的问题,对于全局变量来说,它是在程序开始前就分配了内存和资源,但是对于某些东西来说,如果你一直不用它,那么不就浪费了?我们需要的这种特殊的类是在我们需要的时候才能创建,而且永远都只有一个实例.
对于一个类来说,只要new就能产生一个实例,那么怎么才能让new不产生一个实例呢?new是通过构造器才能构造实例的,那么当我们把构造器设定为私有的那么不就能控制new了,然后再给一个公用的接口来创建对象,这样我们就可以在这个公用的接口里面做很多事情了,我们可以控制是否实例已经创建过一个了,没有创建则创建,创建了则范围该实例指针,这样就可以想创建就创建,并且只创建一个对象,但是这样还是会存在问题的,后面再分析,先用C++实现这个模式
class Single
{
private:
Single();
public:
static Single *CreateSingle() // 静态函数,作为类的函数,而非对象
{
if(m_pObject == NULL)
m_pObject = new Single();
return m_pObject;
}
private:
static Single* m_pObject; // 同上,也是作为类的变量
}
上面说到了这个会出现一些问题,那么问题会出在什么地方呢~
上面的代码只能在单线程里面有好的效果,对于多线程来说,这样的代码还是会出现多个实例.
这个就需要加一些判断才能达到在多线程下用
- Head First设计模式 C++实现-Singleton(单件模式)
- <Head First 设计模式>:单件模式:Singleton
- Head First 设计模式 (五) 单件模式(Singleton pattern) C++实现
- Head First设计模式C++实现--第五章:单件(Singleton)模式
- 《Head First 设计模式》单件模式
- Head First-设计模式:单件模式
- Head First 设计模式——单件模式(Singleton Pattern)
- Head First 设计模式之单件模式(Singleton Pattern)
- Head First设计模式 读书笔记-单件模式、命令模式
- Head First---单件模式
- Head First设计模式笔记(6)---单件模式
- Head First 设计模式(5):单件模式
- head first 设计模式——(单件模式)
- 《Head first设计模式》学习笔记 - 单件模式
- 《Head first设计模式》学习笔记 – 单件模式
- 《Head first设计模式》学习笔记 – 单件模式
- Head First 设计模式(五)单件模式
- 单件模式-《Head First 设计模式》第五章
- 网络游戏和网络广告表现较好
- 阿里巴巴集团董事局主席马云发内部邮件
- Asp.net 文件上传操作
- ExtJs
- Web2.0 互动究竟为我们带来了什么?
- Head First设计模式 C++实现-Singleton(单件模式)
- 如何删除一个目录
- 【原创】真正的驱动入门(—)[附小程序代码]作 者:CCDeath时 间:2007-12-07,23:13链 接:http://bbs.pediy.com/showthread.php?t=56192【文章标题】: 真正的驱动入门(—)[附小程序代码]【文
- C#中的委托和事件(下)(转载)
- CSS 简明手册
- 恢复plsql dev的试用
- 基本数论问题,mod的逆运算
- 推荐一个免费获得Q币的方法!
- 中国IT的发展。