设计模式--创建型-Singleton(单例单件)
2013-10-31 23:07
435 查看
设计模式--创建型-Singleton(单例/单件)
1. 意图
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2. 结构图
3. 简述
通常需要满足以下两点:
3.1 要保证类只能实例话一次,最简单的方法是把构造(包括拷贝构造函数和赋值构造函数)全部设为private或protected。当然这也不是绝对的,比如OGRE的Singleton类就让客户可以通过new的方式创建一个实例。
3.2 提供一个public的static方法用以实例化该类或返回已经实例化的指针。
4. 实例代码
4.1 一种定义方法
// 单例类 class Singleton { protected: static Singleton* _instance; private: Singleton() {} ~Singleton(); Singleton(const Singleton &); Singleton& operator=(const Singleton &); public: static Singleton* getInstancePtr(); void doSomething() {} }; Singleton* Singleton::_instance = 0; Singleton* Singleton::getInstancePtr() { if (!_instance) _instance = new Singleton; return _instance; }
4.2 客户程序
int main () { Singleton::getInstancePtr()->doSomething(); }
相关文章推荐
- c++虚函数
- linux 自动关机
- oracle中用户锁定及解锁
- js 对文件操作
- full permutation
- jquery ajax api
- 简单的JAVA IO
- 【交互】dll中加入资源及提取资源
- Linux-Gcc生成和使用静态库和动态库详解
- [jobdu]丑数
- Thrift
- C程序的内存分配
- SQL_TRACE及 Tkprof用法以及问题分析
- oracle笔记系列(一)
- 才高行厚的hibernate(4)---hibernate的HQL语言
- IOS越狱开发(三)------DEB生成和apt建立
- IOS越狱开发(三)------DEB生成和apt建立
- Sql Server Job 简单使用
- Linux bridge 网桥模块内部数据包转发流程
- Oracle使用ssh导出库报字符集不正确