所謂“懶漢式”與“餓漢式”的區(qū)別,是在與建立單例對象的時(shí)間的不同。
“懶漢式”是在你真正用到的時(shí)候才去建這個(gè)單例對象:
比如:有個(gè)單例對象
public class Singleton{
private Singleton(){}
private static Singleton singleton = null; //不建立對象
public static synchronized Singleton getInstance(){
if(singleton == null) { //先判斷是否為空 singleton = new Singleton (); //懶漢式做法
}
return singleton ;
}
} “餓漢式”是在不管你用的用不上,一開始就建立這個(gè)單例對象:比如:有個(gè)單例對象
public class Singleton{
public Singleton(){}
private static Singleton singleton = new Singleton(); //建立對象
public static Singleton getInstance(){
return singleton ;//直接返回單例對象 }} 它有以下幾個(gè)要素: - 私有的構(gòu)造方法
- 指向自己實(shí)例的私有靜態(tài)引用
- 以自己實(shí)例為返回值的靜態(tài)的公有的方法
|