前言:前幾天,老師上課講解了單例模式,想了想理解還不夠深入,寫篇文章整理一下,希望有更深入的理解。
本人之前在學習oc,java也只是上課的時候學的,平時也沒有特別的去學習,所以本文由理解錯或者寫錯的地方請諒解,也歡迎相互交流,學習。
單例模式
特點:
1.單例類只能有一個實例。
2.單例類的實例只能由自身創建。
3.這個實例必須被全體對象所訪問。
通俗的講,單例類只能實例化一次,之后再實例化也不會創建新的實例,還是之前創建的實例。那怎樣的程序是用單例模式寫的呢?比如說 Windows里的任務管理器,它只能打開一個,不能打開多個,因為只能實例化一個對象,創建一個窗口。(都是老師說的!~~)
java中單例模式的幾種寫法
1.簡單的寫法
public class Singleton{
? ? ? ? ? private static?Singleton instance;
? ? ? ? ? private Singleton(){}
? ? ? ? ? public static Singleton getInstance(){
? ? ? ? ? ? ? ? ? ?if(instance = null){
? ? ? ? ? ? ? ? ? ? ? ? instance = new Singleton();
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? return instance;
? ? ? ? ? } ??
} ? ??
這種是老師課上講的,后來我參考了些資料,發現這種寫法是不安全的,線程不安全,所以不是很推薦這種寫法。但是這種寫法有一個好處可以lazy loading(延遲加載) ,什么是延遲加載,就是類的實例化并不是在類裝載的時候loading的,而是在調用getInstance的時候loading的,意在需要loading的時候loading。
暫時寫這么多。。日后補充~~~~