C++ 单例模式的详解及实例

1.什么叫单例模式?
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。
通过单例模式, 可以做到:
(1)确保一个类只有一个实例被建立
(2)提供了一个对对象的全局访问指针
(3)在不影响单例类的客户端的情况下允许将来有多个实例
2.怎样实现单例模式
一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。
3.具体实现
(1)最简单的单例模式(懒汉模式)
懒汉模式:懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法,顾名思义,懒汉么,很懒的,配置文件的实例直到用到的时候才会加载。
class SiglenTon
{
public:
static SiglenTon *GetInstence()
{
if( p == NULL)
{
p = new SiglenTon();
}
return p;
}
private:
SiglenTon()
{
cout<<"SiglenTon()"<<endl;
}
static SiglenTon *p;
};
SiglenTon *SiglenTon::p = NULL;
int main()
{
SiglenTon *p = SiglenTon::GetInstence();
return 0;
}
(2)第一种方式没有考虑到线程安全
class SiglenTon //(线程安全的饿汉模式)
{
public:
static SiglenTon *GetInstence()
{
cout<<"static SiglenTon *GetInstence()"<<endl;
pthread_mutex_lock(&mutex);
if( p == NULL)
{
pthread_mutex_lock(&mutex);
p = new SiglenTon();
pthread_mutex_unlock(&mutex);
}
pthread_mutex_unlock(&mutex);
return p;
}
private:
SiglenTon()
{
cout<<"SiglenTon()"<<endl;
}
static SiglenTon *p;
};
SiglenTon *SiglenTon::p = NULL;
int main()
{
SiglenTon *p = SiglenTon::GetInstence();
SiglenTon *p1 = p->GetInstence();
return 0;
}
(3)饿汉模式(饿汉模式本身就是线程安全的)
class SiglenTon
{
public:
SiglenTon *GetInstence()
{
if( p == NULL)
{
return p;
}
}
private:
SiglenTon()
{
cout<<"SiglenTon()"<<endl;
}
static SiglenTon *p;
};
以上就是对C++ 中单例模式的讲解,如有疑问请留言或者到本站社区进行交流讨论,感谢阅读,希望帮助到大家,谢谢大家对本站的支持!
# C++
# 单例模式
# 实现单例模式
# C++单例模式详解
# C++单例模式的几种实现方法详解
# C++单例模式的懒汉模式和饿汉模式详解
# C++实现单例模式的方法
# C++设计模式之单例模式详解
# C++实现单例模式的自动释放
# 详解C++实现线程安全的单例模式
# C++线程安全的单例模式讲解
# C++ 单例模式的几种实现方式研究
# C++单例模式的实例详解
# C++ 超详细深入分析单例模式
# 配置文件
# 有一个
# 加载
# 鼠标
# 多个
# 有很多
# 如有
# 才会
# 一台
# 考虑到
# 只有一个
# 只需要
# 什么叫
# 顾名思义
# 管理器
# 谢谢大家
# 提供一个
# 最简单
# 第一种
# 可以做到
相关文章:
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
如何选择CMS系统实现快速建站与SEO优化?
Android自定义listview布局实现上拉加载下拉刷新功能
大型企业网站制作流程,做网站需要注册公司吗?
建站之星后台密码如何安全设置与找回?
广州美橙建站如何快速搭建多端合一网站?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
如何快速搭建个人网站并优化SEO?
高防服务器如何保障网站安全无虞?
实现虚拟支付需哪些建站技术支撑?
如何在阿里云香港服务器快速搭建网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
招贴海报怎么做,什么是海报招贴?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
高性能网站服务器配置指南:安全稳定与高效建站核心方案
建站之星安装后如何自定义网站颜色与字体?
建站上传速度慢?如何优化加速网站加载效率?
宝塔面板如何快速创建新站点?
建站主机数据库如何配置才能提升网站性能?
建站主机SSH密钥生成步骤及常见问题解答?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
如何在腾讯云免费申请建站?
如何在IIS管理器中快速创建并配置网站?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
代购小票制作网站有哪些,购物小票的简要说明?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
建站之星客服服务时间及联系方式如何?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
建站主机选购指南:核心配置与性价比推荐解析
广州营销型建站服务商推荐:技术优势与SEO优化解析
如何在阿里云ECS服务器部署织梦CMS网站?
微信h5制作网站有哪些,免费微信H5页面制作工具?
建站为何优先选择香港服务器?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
婚礼视频制作网站,学习*后期制作的网站有哪些?
如何在阿里云域名上完成建站全流程?
网站app免费制作软件,能免费看各大网站视频的手机app?
济南网站制作的价格,历城一职专官方网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
小建面朝正北,A点实际方位是否存在偏差?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
广州商城建站系统开发成本与周期如何控制?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
如何做网站制作流程,*游戏网站怎么搭建?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
*请认真填写需求信息,我们会在24小时内与您取得联系。