程式在撰寫的過程中,如何善用資源是非常重要的事情。
以下就拿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;以上,為這兩種開發方式的介紹,可視情況擇一使用。
全站熱搜