单例模式的三种创建方法

it2026-03-28  4

方法一:

public class Singleton { private static Singleton uniqueSingleton; // 私有化构造方法 private Singleton() {} // 获取单例 public static synchronized Singleton getSingleton() { if(uniqueSingleton == null) { uniqueSingleton = new Singleton(); } return uniqueSingleton; } }

方法二:

public class Singleton { private static Singleton uniqueSingleton = new Singleton(); // 私有化构造方法 private Singleton() {} // 获取单例 public static synchronized Singleton getSingleton() { return uniqueSingleton; } }

方法三:

class Singleton { private volatile static Singleton uniqueSingleton; // 私有化构造方法 private Singleton() {} // 获取单例 public static Singleton getInstance() { if (uniqueSingleton == null) { synchronized(Singleton.class) { if(uniqueSingleton == null) { uniqueSingleton = new Singleton(); } } } return uniqueSingleton; } }

适用场合:

方法一:只有在getInstance不是频繁使用(对程序性能影响很小)的时候才能使用 方法二:当不希望使用单例的时候还可能没有被初始化,这时候采用;方案二又被称作饿汉单例 方法三:当频繁需要使用单例对象时,采用方案三;性能最好

最新回复(0)