单例模式学习笔记

单例


优点
1.减少内存开支
2.减少性能开销
3.写文件时避免资源多重占用
4.优化共享资源访问


缺点
1.自行实例化的特点导致无法扩展,只能修改源码
2.对测试不利,只有全部完成单例代码才能测试
3.与单一职责原则有冲突


适用
1.生成唯一序列号的环境
2.整个项目需要一个共享访问点
3.创建对象需要消耗资源过多(例如要访问IO和数据库)
4.需要定义大量静态常量和静态方法


代码:
CCDirector* CCDirector::sharedDirector(void)
{
    if (!s_SharedDirector)//断点A
    {
        s_SharedDirector = new CCDisplayLinkDirector();
        s_SharedDirector->init();
    }


    return s_SharedDirector;
}


线程不安全
例如:在线程高并发情况下,线程X和Y都执行到断点A,此时判断到系统中不存在s_SharedDirector,于是X和Y都创建了s_SharedDirector,导致单例不单。(低并发情况下不会产生)


复制
单例类不要实现Cloneabel复制接口


扩展
有上限的单例模式
例如:读文件时,启动多个固定数量的reader实例,在读文件时,可以快速响应
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值