1、餓漢模式
public class Singleton {
? ? private static Singleton instance = new Singleton();
? ? private Singleton() {}
? ? public static Singleton getInstance() {
? ? return instance;
????}
}
2、懶漢模式
public class Singleton {
????private static Singletoninstance;
????private Singleton() {}
????public static synchronized SingletongetInstance() {
????????if(instance ==null) {
????????????instance =new Singleton();
????? ???? }
????????return instance;
????}
}
3、雙重檢測
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;
? }
4、靜態(tài)內(nèi)部類
public class Singleton {
????private Singleton() {}
????private static class SingletonHolder{
????private static final Singletoninstance =new Singleton();
????}
????public static SingletongetInstance() {
????return SingletonHolder.instance;
????}
}
5、枚舉類
public enum Singleton{
INSTANCE;
}