单例模式是我们在面试过程中最常接触的一个设计模式,现在我们来聊聊什么是单例模式
一.什么是单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。属于创建型模式,它提供了一种创建对象的最佳方式。单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。为了保证内存中有且仅有一个对象,避免频繁的创建对象造成对内存的消耗,让所有需要调用这个对象的地方都使用这一个对象。
二.单例模式的类型
1.懒汉式
懒汉式指的是在需要使用的时候才会去创建该单例对象。
懒汉式单例模式实现:
public class Singleton {
private Singleton singleton;
private Singleton(){
}
public static Singleton getInstance(){
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
对于懒汉式单例实现存在一个问题,就是如何确保只创建一个对象?若两个或多个线程同时判断singleton为空,则会创建多个对象。因此我们需要解决线程安全问题。
说到线程安全想到的就是锁了。
有事先走,下次在跟。。。。。。。。。
2.饿汉式
饿汉式指的是在类加载时即创建该单例对象。
饿汉式单例模式实现:
public class Singleton {
private static final Singleton singleton = new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return singleton;
}