为什么会有单例模式?
典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问。比如窗口管理器,打印缓冲池和文件系统
在单例模式之前,先说一下为什么不使用一个全局变量来代替单例模式
全局变量在项目中是能不用就不用的,它是一个定时炸弹,是一个不安全隐患,特别是在多线程程序中,会有很多的不可预测性;
同时,使用全局变量,也不符合面向对象的封装原则。
针对C++
/**********************************
*剑指offer面试题2:实现单例模式
*
*语言:C++
*
*Writted by XRJ on 2017/10/22
*
***********************************/
#include <iostream>
using namespace std;
//第一种方法,考虑到多线程问题,“双检锁机制”,并使用内部类的静态实例达到自动释放内存的目的
class MySingleton1
{
public:
MySingleton1 *getinstance()
{
//此处进行了两次m_Instance == NULL的判断,是借鉴了Java的单例模式实现时,使用的所谓的“双检锁”机制。
//因为进行一次加锁和解锁是需要付出对应的代价的,而进行两次判断,就可以避免多次加锁与解锁操作,同时也保证了线程安全。
if(myinstace1 == NULL)
{
lock();
if (myinstace1 == NULL)
{