singleton模式

Singleton模式

一.意图

保证一个类仅有一个实例,并提供一个访问它的全局访问点.

二.适用性

1.  当类只能有一个实例而且客户可以从一个总所周知的访问点访问它时.

2.  当这个唯一实例应该是通过子类化可扩展的.并且客户应该无需更改代码就能使用一个扩展的实例时.

三.代码

1.  基本单列模式,线程不安全

#include<iostream>

#include"csingleton.h"

usingnamespacestd;

//singletonmode

classCSingleton

{

private:

    CSingleton(){}

    virtual~CSingleton(){}

 

public:

    staticCSingleton*getInstance();

    intid=100;

};

staticCSingleton*singleton;

CSingleton*CSingleton::getInstance()

{

    if(singleton==NULL)

    {

        singleton=newCSingleton();

    }

 

    returnsingleton;

}

 

intmain()

{

    cout<<"HelloWorld!"<<endl;

    CSingleton*singleton=CSingleton::getInstance();

    cout<<"idvalue="<<singleton->id<<endl;

 

    return0;

}

2.线程安全

CSingleton*CSingleton::getInstance()

{

    if(singleton==NULL)

{

//加锁

        if(singleton==NULL)

{

            singleton=newCSingleton();

}

    //解锁

    }

    returnsingleton;

}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值