设计模式单例模式

Posted lampsasarum

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式单例模式相关的知识,希望对你有一定的参考价值。

单例模式

单例模式:保证一个类仅有一个实例,并提供一个全局访问点。

将构造函数放到private里,并提供全局访问点(static静态函数,返回类内部唯一构造实例)

为什么用静态函数,静态成员变量?

  • 调用类里的函数需要先构造对象,有对象才能调用类内成员方法。但这个方法肯定不适合单例模式。
  • 而另一种方法就是静态函数,可以使用类名直接调用。而静态函数只能调用静态成员方法。

技术图片

技术图片

上述代码属于懒汉模式:在第一次用到类实例的时候才会去实例化,访问量较小时,采用懒汉式,以时间换空间。

分析:

  • 最内层的判断,保证单线程肯定智能创建一个对象。
  • 外面的锁,保证创建的过程是原子操作。
  • 在外面的判断,保证只有第一次回加锁,后面就会重复加锁,再判断。

还有一个饿汉式:
技术图片

在单例类定义的时候就进行实例化。访问量较大、线程较多时,采用饿汉式,以空间换时间。线程安全,因为一开始就实例化了。

以上是关于设计模式单例模式的主要内容,如果未能解决你的问题,请参考以下文章

单例模式单例模式精讲(上)

单例模式(单例设计模式)详解

单例模式(饿汉式单例模式与懒汉式单例模式)

设计模式之单例模式

什么是单例设计模式

Java设计模式-单例模式