第1條:用靜態工廠方法代替建構函式
如boolean類中的乙個簡單的例子:
public static boolean valueof(boolean b)
好處有3個:與建構函式不同,靜態工廠方法具有名字;每次被呼叫時不要求非得建立乙個新的物件;他們可以返回乙個原返回型別的子型別物件。
缺點有2個:類如果不含有公有的或者受保護的建構函式就不能被子類化;與其他靜態方法沒有任何區別。
第2條:用私有建構函式強化singleton屬性
有2種實現方法:
使用公有靜態final域:
public class a
}
提供乙個公有靜態工廠方法:
public class b
public static b getinstance()
}
注意:為了使singleton類變成可序列化的(serializable),只在宣告中加上「implements serializable」是不夠的,還必須提供乙個readresolve方法。 Effective Java 學習筆記 6
及時消除不使用的物件的引用,理論上,帶有記憶體管理的語言是不存在記憶體洩漏的,但是如果對物件的操作不當,也是可能會造成記憶體洩漏.如有乙個stack,其pop函式如下.public object pop if element.length 0 return null return element s...
Effective Java 學習筆記(5)
盡量復用物件,而不是建立新的物件,特別是當乙個物件是immutable 不可改變 的時候。如string物件,string s new string string 千萬不要這樣做,因為這裡實際上建立了兩個物件。要避免出現這樣的情況,1是可以用靜態工廠函式,來解決,如類庫中的boolean.value...
Effective Java 學習筆記 6
及時消除不使用的物件的引用,理論上,帶有記憶體管理的語言是不存在記憶體洩漏的,但是如果對物件的操作不當,也是可能會造成記憶體洩漏.如有乙個stack,其pop函式如下.public object pop if element.length 0 return null return element s...