单例模式示例
来源:互联网 发布:centos ftp客户端命令 编辑:程序博客网 时间:2024/06/14 16:58
#include <string>using namespace std;//单例模式 第一种方式 懒汉式class CSingleDemo1{public: static CSingleDemo1* getInstance(); virtual void Display();private: CSingleDemo1(); ~CSingleDemo1(); class CGarbol { public: CGarbol(){}; ~CGarbol() { if(CSingleDemo1::m_pSingle) { delete CSingleDemo1::m_pSingle; CSingleDemo1::m_pSingle = NULL; cout << "单例唯一实例销毁" << endl; } } }; static CGarbol garbol; static CSingleDemo1* m_pSingle;};//单例模式 第二种方式 饿汉式class CSingleDemo2{public: static CSingleDemo2* getSingleton(); void Display();private: CSingleDemo2();};
#include <iostream>#include "test.h"CSingleDemo1* CSingleDemo1::m_pSingle = NULL;CSingleDemo1::CSingleDemo1(){}CSingleDemo1::~CSingleDemo1(){}CSingleDemo1* CSingleDemo1::getInstance(){ if(!m_pSingle) { m_pSingle = new CSingleDemo1(); return m_pSingle; }}void CSingleDemo1::Display(){ cout << "我是第一种单例模式" << endl;}CSingleDemo2::CSingleDemo2(){}CSingleDemo2* CSingleDemo2::getSingleton(){ static CSingleDemo2 single; return &single;}void CSingleDemo2::Display(){ cout << "我是第二种单例模式" << endl;}
调用代码:
CSingleDemo1* single1 = CSingleDemo1::getInstance(); single1->Display(); CSingleDemo2* single2 = CSingleDemo2::getSingleton(); single2->Display();
说明:在实际开发过程中,由于调用了一个单例模式,该单例的构造方法是public的。在调用时候,采用了CSingleDemo1* singleton = new CSingleDemo1();调用,这样的结果就是导致不断的初始化Singleton类,内存很快会耗尽,应用速度变慢。所以,单例模式的构造方法最好定义private,并且通过CSingleDemo1->getInstance()调用。
0 0
- 单例模式示例
- 单例模式示例
- 单例模式示例
- 单例模式示例
- 单例模式代码示例
- 单例模式代码示例
- 单例模式(SingleTon)的应用示例
- PHP单例模式示例代码
- 单例模式的示例代码
- Java单例模式的应用示例
- 线程安全单例模式示例
- java单例模式的示例代码
- 单例模式示例与解析
- 单例模式的示例代码
- 设计模式示例-单例模式(Singleton)
- Java单例模式与工厂模式简单示例代码
- jdbc to mysql 示例(1)优化之单例模式
- 单例设计模式代码示例 MRC&ARC
- 数据库shard中间件对比,以及sharding-jdbc 实现原理分析
- C#学习笔记(一)C#程序结构
- 欢迎使用CSDN-markdown编辑器
- PHP及其微信开发(学习之路 六)
- 网站安全之存储型跨站脚本编制
- 单例模式示例
- 最长严格上升子序列O(nlogn)算法
- SAP HANA SQL合并多行操作
- 线性表
- JavaScript function函数种类
- UUID和自增列的优缺点
- 使用ceoh-deploy工具快速部署ceph--先决条件准备
- 打开Java中的SecurityManager
- webview内存泄漏处理----无效请喷我