浅谈C++设计模式之单例模式
2023-09-27 14:23:32 时间
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
通常我们可以让一个全局变量使得一个对象被访问,但它不能防止客户实例化多个对象,一个最好的办法就是让类自身负责保护它的唯一实例,这个类可以保证没有其它实例可以被创建,并且它可以提供一个访问该实例的方法。
单例模式因为Singleton类封装它的唯一实例,这样它可以严格控制客户怎样访问它以及何时访问它,简单地说就是对唯一实例的受控访问。
实现原理:将构造函数私有化,只提供一个静态方法来创建一个对象。
(1) 将构造函数设置成private;
(2) 声明一个静态的字段,初始化一个实例,返回Singleton对象;
(3) 用静态方法或静态属性,返回那个唯一的实例
当然,在对象用多线程时,可能会造成创建多个实例,可以给创建对象的过程加锁。
Singleton(const Singleton instance){} Singleton operator=(const Singleton instance){} private: static Singleton* instance; Singleton* Singleton::Instance(){ if(instance == 0) instance = new Singleton; return instance; Singleton* Singleton::instance = 0;
其实,单例模式中最关键的就是把public的构造函数私有化。这样就把构造对象的实例化的权利交给了类本身,让Singleton来控制类的 实例化。当然除了构造函数之外,还需要把类的控制复制函数(拷贝构造函数,赋值运算)私有化,因为客户端没有构造的权利,所以也就没有使用控制复制函数的 权利。
作者:山中水寒
来源:51CTO
相关文章
- c++的运算符的重载的代码
- 【c++STL——第四讲】stack系列 (常用知识点总结)
- C++设计模式 ==> 简单工厂模式
- C++设计模式 ==> 工厂模式
- C++之PIMPL模式
- 大话设计模式C++实现-第15章-抽象工厂模式
- 《C++ Primer Plus》学习笔记2
- 大话设计模式C++版——代理模式
- C++设计模式之代理模式
- c++ 基于wincrypt的DES CBC模式加解密
- C++类中包含stl容器时,使用sizeof求大小的问题
- 《C++面向对象高效编程(第2版)》——2.3 实现的含义
- 《C++面向对象高效编程(第2版)》——3.12 参数传递模式——客户的角度
- 《C++面向对象高效编程(第2版)》——3.14 为参数选择正确的模式
- C++抽象工厂模式
- C++工厂方法模式
- 单例模式及C++实现代码
- C++ 让控制台运行到最后按下回车键才结束的3种方法
- C/C++教程 第四章 —— 理解文件操作