单例模式学习笔记

来源:互联网 发布:深圳教苑中学 知乎 编辑:程序博客网 时间:2024/06/05 07:46
单例


优点
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
原创粉丝点击