单例模式

单例模式_第1张图片
单例模式有几种?饿汉式、懒汉式。这两种是最常见的。还有几种是对其扩展的。具体如下:
单例模式_第2张图片
我们可以从上图看到,共有六种方式。

其中在懒汉式基础上扩展的有两种。即:加锁的懒汉式及双重判断加锁的懒汉式

还有一种是使用内部类实现的。即:内部静态类的

最后一种是比较少见的。使用枚举的。

我们来看看每种方式代码都怎么写。
懒汉式:
单例模式_第3张图片

懒汉式优缺点:

单例模式_第4张图片
饿汉式:

单例模式_第5张图片

饿汉式的优缺点及适用场景:单例模式_第6张图片
加锁懒汉式的由来:
单例模式_第7张图片
双重判断加锁的懒汉式:单例模式_第8张图片

有了加锁的懒汉为什么还会有加锁双重判断的呢?这种由什么优缺点呢?请看下图
单例模式_第9张图片
内部静态类是实现的懒汉式:单例模式_第10张图片
这种模式的有缺:

单例模式_第11张图片

你可能感兴趣的:(单例模式)