單例模式作用:確保系統中一個類只產生一個實例
單例模式的好處:(1)對於頻繁使用的對象,可以省去創建所花費的時間
(2)由於new操作的次數減少,因而對系統內存的使用頻率也會降低,減輕GC的壓力,縮短GC停頓的時間
單例模式的參與者及基本結構
代碼如下
package com.lohocc.design;
/**
* @author lohocc
* @Date 2015年6月26日
* 懶漢方式
*/
public class Singleton {
/**
* 1.私有的構造方法
* */
private Singleton(){}
/**
* 2.私有的靜態變量
* */
private static Singleton singleton;
//餓漢方式 private static Singleton singleton = new Singleton();
/**
* 3.public的getInstance()
* */
public synchronized static Singleton getInstance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
懶漢模式比起餓漢模式的優點是對象不會隨着類的加載而加載,只有第一次調用getInstance()方法的時候纔會生成對象,但是由於加入了同步關鍵字,在多線程的環境下效率反而比餓漢慢,可以使用靜態內部類的方式從而避免使用synchronized 關鍵字