可以看到我們將Singleton class的constructor宣告為private,表示這個class不能直接用new的方式建立物件,這是為了讓這個class永遠只有一個instance。
從Main可以看到,使用Singleton.getInstance()的方式來取得物件,最終a.equals(b)輸出為true,表示a跟b是同樣的物件。
在Singleton的getInstance方法裡面,當判斷到instance還沒被new過才new,有new過就直接回傳instance,用這樣的方式來確保只會有一個instance。
利用singleton design pattern的好處是可以節省資源,例如StringUtil / Data Access Object ,像這種如果每次使用的時候都要去new它,就會造成不必要的資源浪費,尤其是跟DB connection有關的,也會增加資料庫的負擔。
再者,非得只能有一個實例的情況,也是很常遇到的。
例如,在開發過程中常用的config檔,如果程式有多處都會用到這個config,每次都去new它,就會很浪費資源,像這種共用的設定檔,就可以使用singleton。