鑒于本人才疏學(xué)淺,所以此文章僅僅基于自己對于文章的基礎(chǔ)理解于簡單應(yīng)用理解。歡迎大家批評。
在創(chuàng)建與銷毀對象中,1-4條主要講解在創(chuàng)建對象對于性能來講,盡量減少構(gòu)造器的使用,盡量使用靜態(tài)工廠類方法。并宣揚了靜態(tài)工廠的優(yōu)勢。
來說一下優(yōu)勢:
一、靜態(tài)工廠方法 有名稱:很簡單有名稱無論在調(diào)用還是修改期間都是極好極好的,可能因為自己本身參與二次開發(fā)比較多對于方法命名相似度很高的方法很反感也很煩惱,構(gòu)造器方法同名不同參會更讓人煩躁。而采用靜態(tài)工廠方法就可以讓調(diào)用人很清楚明白調(diào)用的方法,亦便于代碼維護(hù)。
二、不必每次創(chuàng)建一個新的對象:簡單來說就是我可以復(fù)用一些實例對象,不必每次都需要new一個出來。這樣可以保證在哪個階段實例出來的對象是新的哪個對象是復(fù)用過來的,這樣的類在書中稱為實例受控的類。這樣的類完全可以用==取代equals 來提升性能。性能的提升就是在每一點一滴的積累中提升。
三、靜態(tài)工廠方法可以返回原返回類型的任何子對象:不多解釋可以類比一下接口。優(yōu)勢還存在可以根據(jù)程序員控制來改變方法的權(quán)限,簡單來說可以通過邏輯對代碼的公有之類進(jìn)行改變。
四、在創(chuàng)建參數(shù)實例代碼簡潔易懂:如果在一個類中創(chuàng)建多個構(gòu)造器且參數(shù)數(shù)量相同但類型不同時,使用靜態(tài)工廠類就顯得更加簡潔。這樣也便于便用與維護(hù)
說一下缺點:如果靜態(tài)工廠方法為私有構(gòu)造器,那么不能實現(xiàn)子類化,因為鼓勵程序復(fù)合而不是繼承
靜態(tài)工廠方法實際上就靜態(tài)方法。這樣對于查詢?nèi)绾螌崿F(xiàn)實例化是困難的?,F(xiàn)在的ide會有支持查詢?nèi)绾螌崿F(xiàn)實例化。
所以在進(jìn)行實例對象的時候不僅考慮公有構(gòu)造器,也要考慮靜態(tài)工廠實現(xiàn)。
最后說一下私有構(gòu)造器,私有構(gòu)造器可以保證唯一性,在不想實例的類中也可以讓子類可調(diào)用超類的構(gòu)造器。
書中第五條說的是避免創(chuàng)建不必要的對象,實際上說的是減少內(nèi)存開銷,在能復(fù)用的情況下盡量不要創(chuàng)建新的對象這樣不僅可以減少內(nèi)存還可以加快程序響應(yīng)速度。但是在必須要創(chuàng)建新對象時不要復(fù)用對象。
書中對六、七條表述的意思是一種編碼習(xí)慣。
在第六條中指明內(nèi)存泄漏以及避免內(nèi)存泄漏,以及在緩存中被忽略的過期引用。在編寫關(guān)于內(nèi)存方面的代碼期間應(yīng)該注意到內(nèi)存溢出以及內(nèi)存泄漏的問題,當(dāng)對象被廢棄或長久不使用時應(yīng)廢棄引用。這樣不僅避免內(nèi)存泄漏問題也可以避免在錯誤的方法上執(zhí)行。
第七條盡量避免使用finalizer方法,不存在沒有漏洞的方法 ,使用終極方法使代碼行為不穩(wěn)定、降低性能。
此次學(xué)習(xí)筆記。歡迎指正