最近在豆瓣上看到一些書評,很有感想,其中有一本叫 effective java據說很好,下載了看看,果然大作,很多東西都讀不懂,功力尚淺,還得繼續努力。讀的時候感覺很爽,比講文法的書好看多了。
第一部分 對象的建立和銷毀。
講了5條原則
1.用靜態Factory 方法代替建構函式。
好處:避免建立重複的對象,因為靜態方法不許要建立對象就可以使用,造成不必要的浪費。重複返回同一個對象。保證單態。
Factory 方法可以取更加容易記的名字,而建構函式則不行。
Factory 方法可以返回一個原傳回型別的子類對象,適合於基於介面的架構結構。
缺點: 類如果不包含公有的或受保護的建構函式,就不能被子類化。對於公有的靜態工廠所返回的非公有類,也同樣如此。
命名習慣:valueOf(), getInstance()
2.使用私人的建構函式強化singleton。
singleton代表那些本質上具有惟一性的系統組件。
兩種實現方法。一是定義公有的static final 的類對象。
二是用方法返回一個對象。還有就是序列化的時候應該注意以後在看這方面的內容。
3.通過私人建構函式強化不可執行個體化的能力。
對一些工具類,只包含靜態方法和靜態域,把建構函式定義為私人的,以提高系統的效能。
4.避免重複建立重複的對象。
在迴圈中建立對象的代價是非常昂貴的,所以應該盡量避免建立重複的對象,加入靜態快 static{} 和定義一些final 的常量,這樣可以減少重複對象的定義。提高效能。在對象池尤其是資料庫的串連的時候應該注意重發對象的避免,高效的提高系統效能。
5.消除到期對象的引用。
講了一個記憶體泄露的例子。很經典的棧,在棧的彈出時經常出現到期引用,因為棧自己管理記憶體。
一般而言,只要一個類自己管理記憶體,程式員就應該警惕記憶體泄露,一旦一個元素被釋放掉,則該元素中所包含的任何的對象的引用應該被清空。
另一個來源是緩衝。一旦一個對象的引用放在緩衝裡,就很容易被遺忘。
水平有限,就把自己看懂的那點東西寫了寫。