设计模式(一):单例模式
引言
关于设计模式还是非常的重要的,有些面试还是会问到的,因为要区分差异,所以有可能问到了回答不上来可能这份工作就与你无缘了,虽然设计模式总共有23种,但其实常用的也就那几个,所以把常用的掌握了,然后其余的熟悉即可。
一、简介
单例模式特点:
唯一性
:在整个程序的声明周期中,该类只存在一个实例全局性访问
:提供了统一的接口,供各个模块或者代码部分访问
二、使用场景
作用
:
资源共享和管理
:可以看作只存在一份的全局对象,在多线程中可以通过其中的成员进行使用状态一致性维护
:由于只有一个实例,更改状态后的信息也是实时的节省内存和性能优化
场景
:数据库连接池、消息队列服务类等
三、写法
1.饿汉模式
饿汉模式
:无论用不用这个单例类,这个单例对象就已经被创建出来,直接拿来用就行。
class Object
{
public:
Object(const Object&) = delete;
Object& operator=(const Object&) = delete;
static Object* getInstance();
private:
Object() = default;
private:
static Object m_object;
// static Object* m_object;
};
Object Object::m_object; // 类内定义,类外初始化
// Object* Object::m_object = new Object;
Object* Object::getInstance()
{
return &m_object;
// return m_object
}
2.懒汉模式
懒汉模式
:使用单例对象的时候才创建出来,多线程会出现线程安全问题,最简单的处理方式是,返回一个静态的局部对象。
class Object
{
public:
Object(const Object&) = delete;
Object& operator=(const Object&) = delete;
static Object* getInstance();
private:
Object() = default;
private:
};
Object* Object::getInstance()
{
static Object obj;
return &obj;
}
原文地址:https://blog.csdn.net/weixin_60033897/article/details/144675313
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!