如何用C++写一个Singleton 单例模式
来源:互联网 发布:淘宝微淘可以发视频吗 编辑:程序博客网 时间:2024/06/13 09:12
单例模式是比较常用的设计模式,尤其是在游戏设计中会经常用到,在面试中也是非常容易被问到和实现。今天我们来看看如何用C++来实现一个singleton。
单例模式的主要特性是只能实例化一个对象,在游戏中我们会有各种资源,我们也会在各个地方需要访问这些资源,那么如何得到这些资源呢?我们可以写一个资源管理类来获得各种你想要的资源,问题是在不同的类中如果你想获取游戏资源,就要新建一个资源管理类,这样其实是对内存的浪费。我们其实只需要一个资源管理类就够了,那么这时候就可以使用singleton。
既然只能实例化一个对象,那么就不能让用户直接用new来实例化对象的,因为这样用户将可以实例化很多个对象。我们知道在实例化对象的时候会调用构造函数,为了禁止用户在外部实例化对象,我们可以将构造函数私有化。同样,我们也不应该允许用户copy一个实例,我们可以通过将copy构造函数和赋值函数私有化来禁止copy操作。既然无法在类外实例化对象,用户要如何获得一个对象呢?我们可以提供一个接口,用户需要一个此类对象的时候可以通过这个接口获得。嗯,一个简单的singleton必须包含的内容就这些啦,我们来看看代码怎么实现:
class GameData{public:static GameData* getInstance(){if(instance == NULL)instance = new GameData();return instance;}private:static GameData* instance;GameData();GameData(const GameData& data);GameData& operator=(const GameData& data);};
在使用的时候我们需要在外部对静态实例初始化:
GameData* GameData::instance = NULL;
程序结束时删除此对象:
delete GameData::getInstance();
一个基本的singleton大概这样就可以了,在这里我没有考虑线程安全,只提供一个基本写法。
0 0
- 如何用C++写一个Singleton 单例模式
- Java 写一个单例模式(Singleton)出来
- c++-单例模式Singleton
- 如何用Java实现单例模式
- 设计一个单例模式:Singleton
- 实现一个单例模式Singleton
- Objective C 实现Singleton(单例)模式.
- Objective —C 单例模式 Singleton
- Objective-C使用单例(Singleton)模式
- 【Object-C】单例模式Singleton
- Object-C单例模式Singleton
- Objective-C中的单例模式(singleton)
- c++--Singleton单例模式的实现
- Swift、Objective-C 单例模式 (Singleton)
- JAVA的单例模式(用java写一个singleton的例子)。
- 从别人写的 Object-C 中 Singleton (单例) 模式 中的一些理解
- 从别人写的 Object-C 中 Singleton (单例) 模式 中的一些理解
- 如何用C实现一个类以及些许设计模式
- Linux开发一_Arm交叉编译环境
- dyld: Library not loaded: @rpath/libswiftCore.dylib Reason: image not found蛋疼的崩溃
- 关于Flex IBrowserManager取不到浏览器地址的问题
- D3.js学习总结
- Google Java编程风格指南 编程格式标准
- 如何用C++写一个Singleton 单例模式
- 排序算法—归并排序
- 加急审核以及拒绝理由的辩解
- UML图-类图
- Linux开发二_构建标准c库newlib
- hdu 3333(树状数组)
- apps被拒绝的各种理由以及翻译
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
- 将ruby on rails 部署到heroku