九月 16, 2014Java设计模式 - SingletonJava 设计模式 单例模式 Singleton 懒汉(线程安全)12345678910111213141516//懒汉public class Singleton { private static Singleton singleton; private Singleton() { } public static synchronized Singleton getSingleton() { if (singleton == null) { singleton = new Singleton(); } return singleton; }} 饿汉123456789101112//饿汉public class Singleton { private static final Singleton singleton = new Singleton(); private Singleton () { } public static Singleton getSingleton() { return singleton; }} 静态内部类123456789101112131415//静态内部类public class Singleton { private static class SingletonHolder { private static final Singleton singleton = new Singleton(); } private Singleton() { } public static Singleton getSingleton() { return SingletonHolder.singleton; }} 枚举12345678//枚举public enum Singleton { INSTANCE; public void whateverMethod() { }} double-lock1234567891011121314151617181920//double-lockpublic class Singleton { private volatile static Singleton singleton; private Singleton() { } public static Singleton getSingleton() { if (singleton == null) { synchronized(Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; }}