博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
01.单例模式--Singleton
阅读量:2394 次
发布时间:2019-05-10

本文共 1337 字,大约阅读时间需要 4 分钟。

原文地址:

Singleton模式:

Singleton模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。比如读取并保存配置文件的类就只应该有一个实例。

Singleton模式典型的结构图如下:

Singleton模式比较简单,也很容易理解。所以不做太多解释,上源码,两种方式的实现代码:

//Singleton.h#ifndef _SINGLETON_H_#define _SINGLETON_H_// 单例模式实现方法1class Singleton{public: static Singleton* GetInstance();protected:private: Singleton(); static Singleton* _instance; // CDestory唯一的工作就是在析构函数中删除Singleton的实例 class CDestory  {  public:   ~CDestory()  {   delete Singleton::GetInstance();  };   };    static CDestory destory; // 定义一个静态成员,在程序结束时,系统会调用它的析构函数 };// 单例模式实现方法2// 此方法比较简洁,并且不用关心单例指针的释放问题class SingletonEx{public: static SingletonEx* GetInstance() {  static SingletonEx _instance;  return &_instance; }private: SingletonEx& operator=(const SingletonEx& other);    SingletonEx() { }; SingletonEx(const SingletonEx&);};#endif //~_SINGLETON_H_//Singleton.cpp#include "Singleton.h"#include 
using namespace std;Singleton* Singleton::_instance = 0;Singleton::Singleton(){ cout<<"Singleton...."<
using namespace std;#include
int main(int argc,char* argv[]){ Singleton* sgn = Singleton::GetInstance(); Singleton* sgn1 = Singleton::GetInstance(); _ASSERT(sgn==sgn1); // 证明两个指针地址相同,是同一个对象的地址 SingletonEx* sgnex = SingletonEx::GetInstance(); SingletonEx* sgnex1 = SingletonEx::GetInstance(); _ASSERT(sgnex==sgnex1); // 证明两个指针地址相同,是同一个对象的地址 return 0;}

你可能感兴趣的文章
KMP算法实现
查看>>
KMP实现(二)
查看>>
C++要点(五)-多重继承和虚继承
查看>>
中缀表达式转后缀表达式并计算后缀表达式的值...
查看>>
有序链表的合并(递归实现)
查看>>
什么是程序员的优秀品质?
查看>>
咋想...
查看>>
数组逆序输出(递归)
查看>>
大数据量,海量数据处理方法总结(转)
查看>>
整数划分(计数)
查看>>
整数划分(计数+划分显示)
查看>>
signed和unsigned的比较
查看>>
C语言深度剖析总结(一)
查看>>
Big Endian和Little Endian的转换...
查看>>
不用sizeof(), 判断系统是32位还是16位...
查看>>
交换a和b...
查看>>
POJ_1664
查看>>
迷宫问题...
查看>>
ZOJ_1295
查看>>
海量数据统计总结...
查看>>