你會單例嗎?

njutbkk發表於2019-02-01

Spring橫行的今天看似自己寫單例的時候不多啊.

公司一個高階技術總監級別的。在他的專案中偶爾看到一段程式碼:

public class SigarUtil {
    private static Sigar sigar;
    public static Sigar getInstance() {
    if (null == sigar) {
        sigar = new Sigar();
        }
        return sigar;
    }
}
複製程式碼

額~~應該是有點問題的,至少執行緒不安全。看樣子單例並不簡單。

話不多說,上乾貨:

public class Singleton {
    private static class Holder {
        private static Singleton singleton = new Singleton();
    }
 
    private Singleton(){}
 
    public static Singleton getSingleton(){
        return Holder.singleton;
    }
}
複製程式碼

再上乾貨:

public enum Singleton {
    INSTANCE;
    private String name;
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
}
複製程式碼

相關文章