一、单例模式

一般有八种写法,这里简单记录一下思路,首先单例需要构造器是private,然后一般有个static方法获得这个类的实例。

饿汉式:

  所谓饿汉式其实应该是相对于懒汉式,懒汉式就是当你用到这个类的时候,才初始化实例并给你,所以这个饿汉式就是在类加载的时候就初始化了这个对象,所以有两种方法,一种是

private final static Singleton INSTANCE = new Singleton();


 public static Singleton getInstance(){
        return INSTANCE;
    }

 

还有就是利用static块,

private static Singleton instance;

    static {
        instance = new Singleton();
    }


public static Singleton getInstance() {
        return instance;
    }

 

 

懒汉就是要用到的时候,才去初始化或者说new这个对象。

这就有线程安全的问题了,所以懒汉这里有

  线程不安全的情况;

  线程安全getInstance同步方法的情况;

  采用同步块,只判断一次instance==null所以还是线程不安全的情况;

  采用同步块但双重检查的情况;

 

 

然后还有两种分别是静态内部类和枚举的写法。

静态内部类:

public class Singleton {

    private Singleton() {}

    private static class SingletonInstance {
        private static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonInstance.INSTANCE;
    }
}
View Code

相关文章:

  • 2021-11-05
  • 2021-09-24
猜你喜欢
  • 2021-12-12
  • 2022-12-23
  • 2021-07-24
  • 2021-08-20
  • 2022-02-28
  • 2021-08-13
  • 2021-08-08
相关资源
相似解决方案