Singleton模式C++
来源:互联网 发布:人工智能 库布里克 编辑:程序博客网 时间:2024/06/05 20:56
为什么需要singleton模式呢,因为有时候需要保证一个类仅有一个实例,并且提供一个访问它的全局访问点。
比如游戏里面只有一件的厉害的装备,比如屠龙刀,倚天剑只有一把。
懒汉模式
class Singleton{public: static Singleton* Instance();protected: Singleton(){}private: static Singleton* _instance;};Singleton* Singleton::_instance = NULL;Singleton* Singleton::Instance(){ if (_instance == NULL) _instance = new Singleton; return _instance;}
使用懒汉模式时,Singleton在程序第一次调用的时候才会初始化自己,代码同上。使用该模式时,由于if语句的存在,会影响调用的效率。而且,在多线程环境下使用时,为了保证只能初始化一个实例,需要用锁来保证线程安全性,防止同时多个线程进入if语句中。如果遇到处理大量数据时,锁会成为整个性能的瓶颈。一般懒汉模式适用于程序一部分中需要使用Singleton,且在实例化后没有大量频繁访问或线程访问的情况。
使用饿汉模式时,Singleton在程序一开始就将自己实例化,之后的Instance方法仅返回实例的指针即可,这样就解决了上述提到的if语句影响效率的问题
饿汉模式
class Singleton{public: static Singleton* Instance();protected: Singleton(){}private: static Singleton* _instance;};Singleton* Singleton::_instance = new Singleton();Singleton* Singleton::Instance(){ return _instance;}
参考:
[1]. https://www.tianmaying.com/tutorial/singleton
[2]. 《设计模式》
阅读全文
0 0
- Singleton模式(C++)
- 【C++】实现Singleton模式
- C#.net Singleton 单体模式
- c++-单例模式Singleton
- Singleton设计模式(C++)
- Objective C 实现Singleton(单例)模式.
- ios开发:Objective-C的singleton模式
- Objective —C 单例模式 Singleton
- Objective-C使用单例(Singleton)模式
- 【Object-C】单例模式Singleton
- Object-C单例模式Singleton
- Objective-C中的单例模式(singleton)
- c++--Singleton单例模式的实现
- Swift、Objective-C 单例模式 (Singleton)
- Singleton模式
- Singleton模式
- singleton模式
- Singleton模式
- 【微信调试工具】Ubuntu 14.04 安装微信调试工具
- bzoj 4517(组合数学)
- C# 中的 delegate, Lambda 表达式 和 event
- Android databinding(详解三)--自定义属性使用
- JAVA编程思想学习 — 第九章 (违例差错控制)
- Singleton模式C++
- hdu6194 string string string 后缀数组 + RMQ
- 常用代码html速查列表
- 用SparkCore统计变位词
- 安装python
- event_base_loop
- BeanUtils 工具 copyProperties 拷贝对象
- Struts 2三种方式实现Ajax
- 获取Java类中所有的方法和属性