设计模式学习笔记-Singleton
来源:互联网 发布:网络媒介的优点 编辑:程序博客网 时间:2024/04/23 19:51
这个应该是比较简单的一个设计模式,也是我接触的第一个模式。要点是构造函数声明为私有,定义一个指向自己的静态指针,在合适的时候new一个对象。简单的代码如下:
1: class Singleton {
2: public:
3: static Singleton* instance()
4: {
5: if (_instance == NULL)
6: {
7: _instance = new Singleton;
8: }
9: return _instance;
10: }
11: private:
12: Singleton(){}
13: ~Singleton(){}
14:
15: private:
16: static Singleton* _instance;
17: };
18:
19: Singleton* Singleton::_instance = NULL;
仅仅是练习一下而已,没有实际的用处。实际代码中必须要有其他的成员变量和函数才能发挥功能。
首先一个问题是上面的代码线程不安全。static的东西,在多线程访问并“创建”的时候必须要加锁保护一下才行。一般用“双重锁定检查”来做,这里省略。
另外一个问题是如何释放资源。如果把析构函数设置为私有的,就不能显示去delete。如果设置为公共的,封装性又不太好,毕竟不应该谁都能删除一个公共的资源。一种建议的做法是再搞另一个对象来管理单体,在合适的时候让那个对象来删除单体资源,这里要用到友元类。单体一般生命周期都很长,很多代码几乎都不删除单体。
最后一个问题是单体可以用模板来自动生成,ACE就有这样的模板来生成单体。
- 设计模式学习笔记-Singleton
- 设计模式学习笔记-(1)Singleton模式
- 设计模式学习笔记之Singleton模式
- 设计模式Singleton学习
- 设计模式学习--Singleton
- Singleton模式学习笔记
- 设计模式学习笔记5:Singleton模式及其Delphi实现
- 阿Sam的设计模式学习笔记----Singleton模式
- 设计模式学习笔记二(Singleton单件模式)
- 设计模式学习笔记(九)—Singleton模式
- 设计模式学习笔记(1)单体模式Singleton
- 【设计模式学习笔记】Singleton单件模式
- 学习笔记:关注C++设计模式之Singleton模式
- 设计模式学习笔记:Singleton(单件模式)
- 设计模式学习笔记(一)之单例模式(Singleton)
- 【设计模式】学习笔记7:单件模式(Singleton)
- 我的设计模式学习笔记------>单例模式(Singleton)
- 设计模式学习笔记——单例(Singleton)模式
- Javascript的this用法
- linux中常见的信号
- VC++中数据类型的转换
- mfc-窗口风格
- 蒋涛:从程序员到老总
- 设计模式学习笔记-Singleton
- 在frame结构的页面中,如何实现用struts2跳转时,只改变页面中的某个frame
- Excel2007制作简单级联下拉框
- hdu1358 Period
- 写在30岁前3天
- 64位环境中使用SQL查询excel的方式解决
- VC/MFC中常用消息总结
- Fragments (Android官方文档中文版)
- Linux下解压、打包命令及其tar命令详解