Singleton模式——设计模式学习
2017-03-16 00:05
337 查看
Singleton
一 意图
保证一个类仅有一个实例,并提供一个访问的全局访问点。
二 结构
为什么需要仅有一个类的单例类呢?在很多种情况下,一个系统只需要此类的一个实例就够了:一个窗口管理器,一个消息通知器,一个数据存储器……
有时候只能有一个:系统共用一个存储器,很多地方访问到存储器,必须要保证存储器唯一。
![](http://pic002.cnblogs.com/images/2012/328668/2012010419544482.jpg)
三 代码实现
从结构上来看是看起来非常的简单,因为这仅仅是对类的使用方式进行了限制,使对类实例创建得到更容易控制。
四 实例分析
事件通知栏实现:
![](http://pic002.cnblogs.com/images/2012/328668/2012010419564877.jpg)
平台上单例类的实现方式:
两个宏
1 声明
2 实现
一 意图
保证一个类仅有一个实例,并提供一个访问的全局访问点。
二 结构
为什么需要仅有一个类的单例类呢?在很多种情况下,一个系统只需要此类的一个实例就够了:一个窗口管理器,一个消息通知器,一个数据存储器……
有时候只能有一个:系统共用一个存储器,很多地方访问到存储器,必须要保证存储器唯一。
![](http://pic002.cnblogs.com/images/2012/328668/2012010419544482.jpg)
三 代码实现
class Singleton { protected: Singleton() { cout<<"Singleton constructor"<<endl; } public: static Singleton* getInstance() { if (s_instance == NULL) { new Singleton(); } return s_instance; } static closeIstance() { if (s_instance != NULL) { delete s_instance; s_instance = NULL; } } private: static Singleton* s_instance; }; Singleton* Singleton::s_instance = NULL; int main() { Singleton* single = Singleton::getInstance(); return 0; };
从结构上来看是看起来非常的简单,因为这仅仅是对类的使用方式进行了限制,使对类实例创建得到更容易控制。
四 实例分析
事件通知栏实现:
![](http://pic002.cnblogs.com/images/2012/328668/2012010419564877.jpg)
平台上单例类的实现方式:
两个宏
1 声明
#define VFX_OBJ_DECLARE_SINGLETON_CLASS(_className) \ public: \ static _className *getInstance(); \ static void closeInstance(); \ private: \ static VfxU8 s_InstanceBuf[]; \ static _className *s_instance
2 实现
#define VFX_OBJ_IMPLEMENT_SINGLETON_CLASS(_className) \ _className *_className::getInstance() \ { \ if (s_instance == NULL) \ { \ new (s_InstanceBuf) _className(); \ s_instance = (_className *)s_InstanceBuf; \ s_instance->init(NULL); \ } \ return s_instance; \ } \ \ void _className::closeInstance() \ { \ if (s_instance != NULL) \ { \ s_instance->deinit(); \ s_instance = NULL; \ } \ } \ \ VfxU8 _className::s_InstanceBuf[sizeof(_className)]; \ _className *_className::s_instance = NULL
相关文章推荐
- 设计模式学习笔记(二)——Singleton单件模式
- 关于Singleton设计模式的计数器代码实例(拷贝粘贴即可学习)
- JavaScript 设计模式学习 Singleton
- 设计模式学习之--Singleton(单例)模式
- 设计模式学习笔记(二)——Singleton单件模式
- 设计模式学习1 Singleton
- java设计模式学习系列之一:单例模式(Singleton)
- java设计模式学习系列之一:单例模式(Singleton) 收藏
- C#面向对象设计模式学习笔记(1) - Singleton 单件模式(创建型模式)
- 设计模式学习总结5 - 创建型5 - Singleton单例模式
- 设计模式学习笔记——单例(Singleton)模式
- java设计模式学习系列之一:单例模式(Singleton)
- AS3.0 设计模式学习-单例模式Singleton
- 设计模式学习笔记二——Singleton模式
- 设计模式学习笔记5:Singleton模式及其Delphi实现
- 阿Sam的设计模式学习笔记----Singleton模式
- 设计模式学习之单件模式(Singleton)
- 设计模式学习_Singleton
- 设计模式C++学习笔记之三(Singleton单例模式)
- 步步为营 .NET 设计模式学习笔记 四、Singleton(单例模式)