單例模式及其優缺點

2021-06-29 06:13:38 字數 1628 閱讀 3357

單例模式分為飢漢模式和懶漢模式

在將單例模式的時候我覺得要先做乙個對比,我們建立乙個類,用普通的方法宣告兩個物件,輸出兩個物件的hashcode值,hashcode值不一樣說明這兩個物件儲存在不同的物理空間。如果hashcode一樣說明儲存在同乙個地方。

package com.soufun.test;

public class a_test

}

測試類

package com.soufun.test;

public class test

}

最後輸出

1807500377

355165777

這兩個物件的hashcode值不一樣,說明這兩個物件不是同乙個。

我們下面再講單例模式:

1.飢漢模式:

package com.soufun.test;

/** * 飢漢模式

* @author user

* */

public class a_test

private static a_test a = new a_test(){};

public static a_test geta_test()

}

測試類

package com.soufun.test;

public class test

}

最後輸出

1807500377

1807500377

2.懶漢模式

package com.soufun.test;

/** * 懶漢模式

* @author user

* */

public class a_test

private static a_test a = null;

public static a_test geta_test()

return a;

}}

輸出:

355165777

355165777

這樣就看出了使用單例模式後,以後所有引用這個物件的都是同乙個物件。而不需要處處使用,就處處建立。

飢漢模式是因為我們在不需要使用這個物件的時候,只要載入這個類,它就會建立乙個物件,所以叫它飢漢模式;

懶漢模式是因為只有當我們要建立這個物件的時候,它才去建立,所以叫它懶漢模式。可能理解上不太準確啊,請見諒啊。

懶漢模式和飢漢模式的好處對比

飢漢模式的優點與缺點

優點1.執行緒安全 

2.在類載入的同時已經建立好乙個靜態物件,呼叫時反應速度快

缺點2.資源效率不高,可能geta_test()永遠不會執行到,但執行該類的其他靜態方法或者載入了該類(class.forname),那麼這個例項仍然初始化了

2.載入慢,因為一開始載入的時候就要建立乙個例項

懶漢模式的優點與缺點

優點資源利用率高,不執行geta_test()就不會被例項,可以執行該類的其他靜態方法。載入時非常快

缺點第一次載入時不夠快,多執行緒使用不必要的同步開銷大,呼叫時比較慢。執行緒不安全。有可能建立多個例項

Java單例設計模式及其優缺點

什麼是單例設計模式?單例模式,是一種常用的軟體設計模式。它的核心思想是指,乙個類只允許產生乙個例項化物件。單例設計模式實現要求 1 構造方法私有化,保證在類的外部不能通過使用new關鍵字來例項化物件 2 在類的內部產生例項化物件,呼叫類的具體方法,使用private static 封裝 3 提供乙個...

單例模式優 缺點

1,例項控制 單例模式防止其它物件對自己的例項化,確保所有的物件都訪問乙個例項。2,伸縮性 因為由類自己來控制例項化程序,類就在改變例項化程序上有相應的伸縮性。單例模式的缺點 1,系統開銷。雖然這個系統開銷看起來很小,但是每次引用這個類例項的時候都要進行例項是否存在的檢查。這個問題可以通過靜態例項來...

單例模式優缺點

5.3.7 單例模式的優缺點 1 時間和空間 比較上面兩種寫法 懶漢式是典型的時間換空間,也就是每次獲取例項都會進行判斷,看是否需要建立例項,浪費判斷的時間。當然,如果一直沒有人使用的話,那就不會建立例項,則節約記憶體空間。餓漢式是典型的空間換時間,當類裝載的時候就會建立類例項,不管你用不用,先建立...