1. 程式人生 > >java中new與static分析

java中new與static分析

抱怨java的new浪費了太多的記憶體,應該大量的使用static
前半句在某些情況下正確,後半句絕對錯誤。

說這話的是完全不懂物件,完全沒有OO基礎知識,但是這些人還在從事Java/.NET等OO軟體開發,相當於外行人冒充內行,可見當前中國軟體業水平多麼低下。

為什麼說這些程式設計師完全不懂OO呢?
因為他們只知道物件兩個表面含義,卻不懂物件背後的含義,物件重要特徵是什麼?物件重要的特徵就是有生命的,有scope的,有生命週期的,這其實是一個很樸素的哲學思想,沒有永垂不朽的東西,任何物體都是有生命的。

既然,物件有生命,那就當然有生有死,在java中,物件什麼時候死已經無需我們操心,因為有垃圾回收機制,我們程式設計師只要決定物件什麼時候生就可以,也就是物件什麼時候建立,以何種方式建立。

物件可以new方式建立,也可以使用建立模式建立,方式很多,Ioc模式的誕生,特別是自動配對auto wiring的Ioc誕生,讓物件的建立也無需我們來編碼了,這更大大解決程式設計師的軟體開發生產力,這也就是Jdon On Rails為什麼快速的原因之一。

回到物件的生命週期上來,使用靜態實際就是變態的延長物件的生命週期,雖然也解放了程式設計師,無需程式設計師照顧物件建立,但是這是一種錯誤的解放,是一種雖然簡單,但是方向完全錯誤,可能導致更大效能陷阱的解決方式,這個我已經在單例是邪惡等帖子中反覆表述,因為我們現在的軟體是一個多執行緒環境,如果你使用靜態,不但導致非
OO
系統,到處是長命百歲的物件,系統難於維護;更重要不小心就導致多執行緒變成單執行緒系統,也就是單使用者系統,某個時刻只能一個使用者操作這個系統。換句話說:就是系統緩慢,人操作一多就宕機。