1. 什么是单例模式
单例模式(Singleton Pattern,也称为单件模式),使用最广泛的设计模式之一。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享(比如log 模块, 驱动模块)
定义一个单例类:
1> 私有化它的构造函数,以防止外界创建单例类的对象;
2> 使用类的私有静态指针变量指向类的唯一实例;
3> 使用一个公有的静态方法获取该实例。
单例模式 两种方式:
1: 懒汉模式:
这种方式可以理解为 在第一次调用的时候,才会创建对象。
LAZY *LAZY::getinstance()
{
if(nullptr == instance)
{
instance = new LAZY();
}
return instance;
}
这种存在两种安全隐患:
1> 内存泄漏问题:
你创建好后, 没办法回收资源。
(解决: 嵌套类删除, 智能指针)
2> 线程不安全:
在多线程中 可能存在, a线程正在创建对象时, 但还没有完成。 b线程也在创建, 判断 nullptr == instance 为真, 有去创建。
(解决: c++11 采用加锁机制。)
2: 饿汉模式
程序在编译一期间就开始已经创建。
static engre* getinstance()
{
static engre instance;
return &instance;
}
在 c++11 中局部静态变量 属于线程安全。 所以这中模式是最安全的。
306

被折叠的 条评论
为什么被折叠?



