01C++实现单例模式
来源:互联网 发布:网络爬虫 维基百科 编辑:程序博客网 时间:2024/06/06 00:42
#include <iostream>#include <string>#include <vector>#include <list>using namespace std;// 使用场景:// 在应用系统开发中,我们常常有以下需求:// - 在多个线程之间,比如初始化一次socket资源;比如servlet环境,共享同一个资源或者操作同一个对象// - 在整个程序空间使用全局变量,共享资源// - 大规模系统中,为了性能的考虑,需要节省对象的创建时间等等。// 因为Singleton模式可以保证为一个类只生成唯一的实例对象,所以这些情况,Singleton模式就派上用场了。// 步骤:// 1. 构造函数私有化// 2. 提供一个全局的静态方法(全局访问点)// 3. 在类中定义一个静态指针,指向本类的变量的静态变量指针// ---------------------------------------------------------// 懒汉式class Singleton1 {public: static Singleton1* GetInstance() { if (singleton_ == NULL) { singleton_ = new Singleton1; } return singleton_; } static void DestreyInstance() { if (singleton_ != NULL) { delete singleton_; } }private: // 防止外部构造。 Singleton1() {} // 防止拷贝和赋值。 Singleton1& operator=(const Singleton1&); Singleton1(const Singleton1& singleton1) {}private: static Singleton1* singleton_;};Singleton1* Singleton1::singleton_ = NULL;// ---------------------------------------------------------// 饿汉式class Singleton2 {public: static Singleton2* GetInstance() { return singleton_; } static void DestreyInstance() { if (singleton_ != NULL) { delete singleton_; } }private: // 防止外部构造。 Singleton2() {} // 防止拷贝和赋值。 Singleton2& operator=(const Singleton2&); Singleton2(const Singleton2& singleton2) {}private: static Singleton2* singleton_;};Singleton2* Singleton2::singleton_ = new Singleton2;int main08() { Singleton1* s11 = Singleton1::GetInstance(); Singleton1* s12 = Singleton1::GetInstance(); if (s11 == s12) { cout << "s11 : " << s11 << " s12 : " << s12 << endl; cout << "s11 == s12" << endl; } Singleton2* s21 = Singleton2::GetInstance(); Singleton2* s22 = Singleton2::GetInstance(); if (s21 == s22) { cout << "s21 : " << s21 << " s22 : " << s22 << endl; cout << "s21 == s22" << endl; } Singleton1::DestreyInstance(); Singleton2::DestreyInstance(); return 0;}
阅读全文
0 0
- 设计模式--单例模式 C++实现
- Objective C 中实现单例模式
- Objective C 实现Singleton(单例)模式.
- Objective-C实现单例模式
- 【Objective-C】单例模式的实现
- objective-C 实现单例模式
- 单例模式代码实现(C++)
- 单例模式 (C语言实现)
- Objective-C实现单例模式
- Objective-C单例模式实现
- Objective-C 单例模式的实现
- Objective-c 实现单例设计模式
- c++--Singleton单例模式的实现
- 单例模式,C/C++实现
- 【C++】单例模式之C++实现
- C#单例模式
- C#-单例模式
- 单例模式(C++)
- ssh is not mapped [FROM ssh]
- Python基础语法之——Lambda
- hibernate的工作原理以及为什么使用
- jpa、mybatis事务混合测试记录
- Apache VFS
- 01C++实现单例模式
- JavaScript的函数使用
- PAT--1077. Kuchiguse
- Java参数传递,值传递
- querylist 入门query部署,获取网页的信息。
- Excel导入SQL时,如何动态获得Sheet的名字
- stm32成长记之滴答时钟
- 开始多线程
- centos 安装mysql 5.5.44