特点:保证了系统内存中该类只存在一个对象。
使用场景:需要频繁的进行创建和销毁对象(使用单例模式可以提高系统性能)、创建对象时耗过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如:数据源、session工厂等)。
饿汉:
public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInstance() { return instance; } }
枚举:
public enum Singleton { INSTANCE; public void sayHello() { System.out.println("hello~"); } }
静态内部类:
public class Singleton { private Singleton() { } private static class SingletonInstance { private static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return SingletonInstance.INSTANCE; } }
double-check:
public class Singleton { private static volatile Singleton instance; private Singleton() { } public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)