单例模式(Singleton Pattern)是一种常用的设计模式,它属于创建者模式。单例模式只允许有一个实例,通过构造函数私有化的方式隐藏对象创建入口,取而代之的是提供公共接口用于获取类的单例。其应用场景广泛,例如创建管理类(只需要一个管理实体),或者应用于对象需要限定唯一性的场景等。注意不要滥用单例模式,否则会导致代码维护困难。
设计思路:
单例模式首先需要一个私有的、静态的单例对象(或者指针);接着需将构造函数声明为私有;最后开放一个公有接口用于获取这个单例对象(由于外部无法获得本类的一个对象,也就无法调用非静态方法,因此需将本接口声明为静态)。
本文介绍单例模式的两种实现方式(其实还有很多种),懒汉模式和饿汉模式,并且在Window环境下实现简单demo。
1.饿汉模式
饿汉模式在类定义时就创建了单例,seems hungry。使用时通过公共接口直接获取已创建好的这个单例对象,不存在并发创建问题,因此饿汉模式是线程安全的。
饿汉模式demo:
//Singleton.h
#pragma once
class Singleton
{
private:
static Singleton* instance; //静态单例指针
Singleton(); //构造函数声明为私有
public:
static Singleton* getInstance();

本文详细介绍了单例模式的概念、设计思路,并通过C++实现了懒汉模式和饿汉模式的单例,探讨了线程安全问题。饿汉模式在类加载时创建单例,线程安全;懒汉模式在首次使用时创建单例,非线程安全。通过加锁可以实现线程安全的懒汉模式。
1463

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



