方式一
package com.pattern.Singleton; public class Singleton { private static Singleton uniqueInstance; private Singleton(){} public static Singleton getInstance(){ if(uniqueInstance == null){ uniqueInstance = new Singleton(); } return uniqueInstance; } }
方式二
package com.pattern.Singleton; public class Singleton2 { private static Singleton2 uniqueInstance = new Singleton2(); private Singleton2(){} public static Singleton2 getInstance(){ return uniqueInstance; } }
方式三
package com.pattern.Singleton; public class Singleton3 { private volatile static Singleton3 uniqueInstance; private Singleton3(){} public static Singleton3 getInstance(){ if(uniqueInstance == null){ synchronized(Singleton.class){ if(uniqueInstance == null){ uniqueInstance = new Singleton3(); } } } return uniqueInstance; } }