单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
1.懒汉模式
public class Singleton { private Singleton() {} private static final Singleton single = new Singleton(); //静态工厂方法 public static Singleton getInstance() { return single; } }
2.饿汉模式
public class Singleton { private Singleton() {} private static Singleton single=null; //静态工厂方法 public static Singleton getInstance() { if (single == null) { single = new Singleton(); } return single; } }
public class Singleton { private Singleton() {} private static Singleton single=null; //静态工厂方法 public static synchronized Singleton getInstance() { if (single == null) { single = new Singleton(); } return single; } }
public class Singleton { private Singleton() {} private static Singleton singleton =null; //静态工厂方法 public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
public class Singleton { private static class LazyHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return LazyHolder.INSTANCE; } }
public enum Singleton { INSTANCE; private Resource instance; Singleton() { instance = new Resource(); } public Resource getInstance() { return instance; } }