程式在撰寫的過程中,如何善用資源是非常重要的事情。
 
以下就拿Singleton(單例模式) Class各別以"懶惰式"及"飢餓式"的寫法來做個比較。
 
所謂懶惰式,就是要用到時才會去建立instance,如以下程式碼。
 
public class Singleton {
    private static Singleton instance = null ;
    private Singleton () {
    }
    
    public static Singleton getInstance () {
         //判斷instance變數是否有值。
         if(instance == null ) {
             //若無,則建立一class instance並assigne給instance變數。
            instance = new Singleton();
         }
         //若有值,則直接回傳。
         return instance;
    }
}

以上可見,instance是在client呼叫getInstance method才會判斷是否有值,若無值才會建立instance,此種採被動的方式稱為懶惰式。
 
以下為飢餓式的寫法。
 
 public class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton () {
    }
    
    public static Singleton getInstance () {
         //直接回傳instance。
         return instance;
    }
}
 
之所以會稱為飢餓式,是因為此instance是static變數,故在類別載入時就會進行初始化,即立即產生一個instance,即為主動的方式。
 
以上,懶惰式實現了Lazy Load,也就是延遲載入的概念,這是在實際開發中很常見的思想,盡量節省資源使用;而飢餓式是在類別載入時立即建立instance;以上,為這兩種開發方式的介紹,可視情況擇一使用。
 
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 流風羽 的頭像
    流風羽

    流風羽的部落格

    流風羽 發表在 痞客邦 留言(0) 人氣()