单例模式的几种方式
学习设计模式有一段时间了,今天恰好用到了单例,而且单例模式比较常用,面试常考,比较重要。为了方便我不再一步一步详细的解释,下面只是给出几种常用的用法:
饿汉式,线程安全:
public class Singleton{ //类加载时就初始化 private static final Singleton instance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return instance; } }
懒汉式,双重检测:
public class Singleton { private volatile static Singleton instance; //声明成 volatile private Singleton (){} public static Singleton getSingleton() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
静态内部类,相对较优的方式:
public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return SingletonHolder.INSTANCE; } }
转载请注明 风吟无声 http://www.cnblogs.com/ywind/