什麼是單例模式?
答:單例模式是設計模式中使用最普遍的設計模式之一。它是一種對象創建模式,用於產生一個對象的具體實例,它可以確保系統中一個類只產生一個實例,它的作用就是提供單例的工廠,使用者獲取並使用單例類。
單例模式有什麼優點?
答:1.對於頻繁使用的對象,可以省略創建對象所花費的時間,這對於那些重量級的對象而言,可以節省可觀的系統開銷
2.由於創建實例的次數變少,因而對系統內存的使用頻率也會降低,浙江減輕GC壓力,縮短GC停頓時間。
注意:1.單例類必須要有一個private訪問級別的構造函數,只有這樣才能保證單例類不會被系統中其他的代碼實例化
2.單例類創建的對象和調用創建單例類的方法必須是static的,只有這樣才能即便沒有創建單例對象,也可以去訪問。
GC :Garbage Collections 字面意思是垃圾回收器,釋放垃圾佔用的空間。
單例類如何創建?
使用內部類的方式實現單例,既可以做到延遲加載,也不必使用同步關鍵字,是一種比較完善的實現。
1.延時加載爲了防止調用單例中的其他方法時,都會初始化這個成員變量
2.同步關鍵字爲了防止單例被重複創建,但同步關鍵字非常消耗時間,不推薦使用
單例類代碼:
public class Singleton {
private Singleton(){
System.out.println("Singleton is create");
}
private static class SingletonHolder{
private static Singleton singleton = new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.singleton;
}
public static void createString(){
System.out.println("createString in Singleton");
}
}