《Android》『Singleton』- 單一物件模式
《簡單介紹》
Singleton 是一種概念,在開發 Android 專案的過程中,很常看到一些程式的寫法,是將建構子設成 private,再另外透過自行定義的一個類別方法,去呼叫建構子並取得該類別的物件實體,剛開始會覺得很奇怪,明明直接使用建構子就可以產生類別的物件實體,為什麼還要特別去定義一個方法呢?
這麼做其實是有它的意義存在的,當我們確定一個類別的物件實體,只需要被產生一次時,若是不去控管建構子,那麼在不同地方需要用到這個類別時,都勢必須建立一個物件實體來操作,這樣會在無形之中建立了許多相同類別的物件,導致資源的浪費,因此,透過自訂一個控管建構子的類別方法,我們可以判斷此類別的物件實體是否已經被建立過,若是已經建立過,則不再建立,以確保每次在使用此類別的物件時,不會重複產生一樣的物件,這種單一物件的設計模式便稱為 Singleton。
《程式範例》
建立 Singleton 的設計模式有幾個要注意的地方,條列如下 –
1. 須將建構子設為 private,以確保此類別皆是透過自訂的方法建立實體。
2. 需自定一個 static 的方法,通常取名為 newInstance 或者是 getInstance,並在其中判斷此類別之物件實體是否已被建立過。
3. 需宣告一個 static 參數,用來儲存此類別本身之物件實體。
以下直接透過程式碼片段,來說明實作 Singleton 的方式 –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class Singleton { //儲存唯一的物件實體 private static Singleton instance; //建構子設成 private private Singleton(){ // 這裡面跑很了多code,建立物件需要花費很多資源 } //自訂之 getInstance 方法 public static synchronized Singleton getInstance(){ //檢查物件實體是否建立過 if(instance == null){ //若未建立則呼叫建構子建立 instance = new Singleton(); } return instance; } } |
Singleton.java
臉書留言
一般留言